有序数组的平方
暴力排序:
先将每个元素平方,然后对其快速排序
双指针解法:
【-2,-1,1,2,3】平方后:【4,1,1,4,9】
可以发现:最大的元素位于两边,所以在两边设置两个指针来比较大小,逐个将大的元素添加到新数组。
def sortSquare(self,nums):
// 设置三个指针,原数组的左右指针,新数组的右指针
n = len(nums)
i,j,k = 0,n-1,n-1
ans = [-1] * n
while(i <= j):
lm = nums[i] ** 2
rm = nums[j] ** 2
if(lm >= rm):
ans[k] = lm
i += 1
else:
ans[k] = rm
j -= 1
k -= 1
return ans