Leetcode 977.有序数组的平方
1 题目描述(Leetcode题目链接)
给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。
输入:[-4,-1,0,3,10]
输出:[0,1,9,16,100]
输入:[-7,-3,2,3,11]
输出:[4,9,9,49,121]
提示:
- 1 <= A.length <= 10000
- -10000 <= A[i] <= 10000
- A 已按非递减顺序排序。
2 题解
双指针两端向中间归并排序。
class Solution:
def sortedSquares(self, A: List[int]) -> List[int]:
res = []
i, j = 0, len(A)-1
while i <= j:
if i == j:
res.append(A[i]**2)
break
if A[i]**2 > A[j]**2:
res.append(A[i]**2)
i += 1
elif A[i]**2 < A[j]**2:
res.append(A[j]**2)
j -= 1
else:
res += [A[i]**2, A[j]**2]
i, j = i+1, j-1
return res[::-1]
速度还不如直接sort
class Solution:
def sortedSquares(self, A: List[int]) -> List[int]:
res = [i**2 for i in A]
return sorted(res)