题目
给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序排序。
力扣链接
python
解法一:直接排序
class Solution:
def sortedSquares(self, nums: List[int]) -> List[int]:
return sorted(num * num for num in nums)
解法二:双指针
size = len(nums)
negative = -1
for i, num in enumerate(nums):
if num < 0:
negative = i
else:
break
new_list = list()
i = negative
j = negative + 1
while i >= 0 or j < size:
if i < 0:
new_list.append(nums[j] * nums[j])
j += 1
elif j == size:
new_list.append(nums[i] * nums[i])
i -= 1
elif nums[i] * nums[i] < nums[j] * nums[j]:
new_list.append(nums[i] * nums[i])
i -= 1
else:
new_list.append(nums[j] * nums[j])
j += 1
return new_list