给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。
image.png
解题思路:
- 暴力法:遍历开平方,再排序;
- 双指针,因为输入A为从小到大排序的,从列表两边开始开方比较,取对比后的较大值,存入ans的末位,以此类推。
Python3代码:
class Solution:
def sortedSquares(self, A: List[int]) -> List[int]:
# ans = [0 for _ in A]
# for i in range(len(A)):
# ans[i] = A[i]**2
# return sorted(ans)
n = len(A)
i, j, pos = 0, n-1, n-1
ans = [0]*n
while i <= j:
if A[i]**2 > A[j]**2:
ans[pos] = (A[i]**2)
i += 1
pos-=1
else:
ans[pos] = (A[j]**2)
j -= 1
pos-=1
return ans
网友评论