力扣 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,而不是在原来的基础上进行的操作。

posted @ 2021-03-29 22:10  乖张❤  阅读(61)  评论(0)    收藏  举报