题目:
python代码:
双指针,从后往前排新数组:
class Solution:
def sortedSquares(self, nums):
n = len(nums)
left = 0
right = n-1
result = [0] * n
index = n - 1
while left <= right:
if nums[left] ** 2 > nums[right] ** 2 :
result[index] = nums[left] ** 2
left += 1
index -= 1
else:
result[index] = nums[right] ** 2
right -= 1
index -= 1
return result
双指针,从前往后排新数组再倒转:
class Solution:
# def sortedSquares(self, nums: List[int]) -> List[int]:
def sortedSquares(self, nums):
n = len(nums)
result = []
left, right = 0, n - 1
while left <= right:
if nums[left] ** 2 > nums[right] ** 2:
result.append(nums[left] ** 2)
left += 1
else:
result.append(nums[right] ** 2)
right -= 1
return result[::-1]
DEBUG:
1、要求新数组是“非递减”,那么只需要考虑递减(也就是>)的这种情况,其他放到else里
2、我用的是先递增排序,然后再倒转的方法