力扣 977题 .有序数组的平方 (21.3.29)
由于上上周踢球肌肉拉伤 卧床休养了半个月 后面时间尽量保持每天两题来补上之前拉下的任务
力扣 977题 .有序数组的平方
题目描述:
给出一个按照非递减顺序排列的整数数组 nums,要求返回每个数字的平方组成的新数组,且要求也按照 非递减顺序 排序
涉及内容:数组 双指针
示例:
输入:nums = [-4,-1,0,3,10]
输出:[0,1,9,16,100]
解释:平方后,数组变为 [16,1,0,9,100]
排序后,数组变为 [0,1,9,16,100]
思路:
在数组首尾各设置一个指针,然后由于数组长度是已知的,可以使用一个标志符号来标记数组长度
之后我们用首尾指针所指向的数组值进行绝对值比较(abs()函数)
然后将大的值的平方输入到一个初始化后的数组中,数组长度标记迭代一次
之所以比较大是因为给出的是按照非递减顺序的数组
提交结果:

完整代码:
A=[-6,-4,-3,0,1,5,6,7]
ans=[0]*len(A)
f=0
l=len(A)-1
s=len(A)-1
while f<=l:
if abs(A[f])>abs(A[l]):
ans[s]=A[f]**2
f+=1
else:
ans[s]=A[l]**2
l-=1
s-=1
print(ans)
思路2:
暴力求解法就是先得到平方值,然后用sort()方法来进行排序,比较直观。
ps:(Python内置函数sorted()函数更加方便
return sorted([num*num for num in A])
sort 与 sorted 区别:
sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。
list 的 sort 方法返回的是对已经存在的列表进行操作,无返回值,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。
浙公网安备 33010602011771号