题目:
给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。
思路:
好题呀!
数组中负数部分,平方后递减
数组中非负数部分,平方后递增
所以两部分 平方后的最大数,分别位于数组的两端,故可用双指针进行归并。
解答:
class Solution:
def sortedSquares(self, nums: List[int]) -> List[int]:
#双指针
n=len(nums)
left,right,idx=0,n-1,n-1
res=[0]*n
while left<=right:
tmp1=nums[left]**2
tmp2=nums[right]**2
if tmp1>tmp2:
res[idx]=tmp1
left+=1
else:
res[idx]=tmp2
right-=1
idx-=1
return res