- 由于非递减数组中可能包含负数,所以使用双指针从两边想中间收敛
class Solution
{
public:
vector<int> sortedSquares(vector<int>& A)
{
vector<int> res(A.size(), 0);//此时应指定数组大小
int k = A.size() - 1;
for (int i = 0, j = A.size() - 1; k >= 0; --k)// i是数组的第一个位置,j是数组的第二个位置
{
if (A[j] * A[j] > A[i] * A[i])//第i位置的平方 > 与第i个位置对应的倒数值的平方
{
res[k] = A[j] * A[j];//确定后面元素的
--j;//右边界左移
}
else
{
res[k] =A[i] * A[i];//
++i;//左边界右移
}
}
return res;
}
};