977 有序数组的平方
给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。
示例 1:
输入:[-4,-1,0,3,10]
输出:[0,1,9,16,100]
示例 2:
输入:[-7,-3,2,3,11]
输出:[4,9,9,49,121]
解法
- Python
class Solution:
def sortedSquares(self, A: List[int]) -> List[int]:
# 方法一
# for i in range(len(A)):
# A[i] = A[i]**2
# return sorted(A)
# 方法二
ls = []
left,right = 0,len(A)-1
while left<=right:
if A[left]**2 > A[right]**2:
ls.append(A[left]**2)
left += 1
else:
ls.append(A[right]**2)
right -= 1
return ls[::-1]
- C++
class Solution {
public:
vector<int> sortedSquares(vector<int>& A) {
int len = A.size();
vector<int> res(len);
int left=0,right=len-1,ri=len-1;
while(left<=right){
int x = A[left]*A[left],y=A[right]*A[right];
if (x<y){
right --;
res[ri] = y;
}
else{
left ++;
res[ri] = x;
}
ri --;
}
return res;
}
};