給定一個按非遞減順序排序的整數(shù)數(shù)組 A,返回每個數(shù)字的平方組成的新數(shù)組,要求也按非遞減順序排序。
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
