没看答案,负数的平方也是整数,所以先把输入数组中的所有负数变成正数,然后把所有元素的平方加入到新数组中并排序输出。
class Solution:
def sortedSquares(self, nums: List[int]) -> List[int]:
res = []
for i in nums:
if i < 0:
i = -i
res.append(i**2)
res = sorted(res)
return res
双指针:使用两个指针分别指向位置 0 和 n-1,每次比较两个指针对应的数,选择较大的那个逆序放入答案并移动指针。
class Solution:
def sortedSquares(self, nums: List[int]) -> List[int]:
res = [0] * len(nums)
i, j, pos = 0, len(nums)-1, len(nums)-1
while i != j:
if nums[i]**2 <= nums[j]**2:
res[pos] = nums[j]**2
j -= 1
else:
res[pos] = nums[i]**2
i += 1
pos -= 1
res[0] = nums[i]**2
return res