题目:
解题:
双指针遍历:
- 从数组末尾
k-1
开始往前遍历,直到索引0
。 - 比较
nums[left]
和nums[right]
的绝对值,将平方值较大的元素放入results
的当前位置。 - 移动相应的指针:如果
nums[left]
的绝对值大于nums[right]
,则移动left
指针;否则,移动right
指针。
class Solution(object):
def sortedSquares(self, nums):
"""
:type nums: List[int]
:rtype: List[int]
"""
k = len(nums)
results = [0] * k
left, right = 0, k - 1
for i in range(k - 1, -1, -1):
if abs(nums[left]) > abs(nums[right]):
results[i] = nums[left] * nums[left]
left += 1
else:
results[i] = nums[right] * nums[right]
right -= 1
return results