给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。
示例 1:
输入:[-4,-1,0,3,10]
输出:[0,1,9,16,100]
示例 2:
输入:[-7,-3,2,3,11]
输出:[4,9,9,49,121]
方法一: 暴力求解: 先全部平方,然后再 排序, vector<int> a 的默认排序函数是 sort(a.begin(),a.end())
class Solution
{
public:
vector<int> sortedSquares(vector<int>& A)
{
vector<int> temp;
vector<int> res;
int i=0;
while(i < A.size())
{
temp.push_back(A[i]*A[i]);
i++;
}
sort(temp.begin(),temp.end());
return temp;
}
};
方法二
class Solution
{
public:
vector<int> sortedSquares(vector<int>& a)
{
int n = a.size();
int i = 0, j = n - 1, k = n;
vector <int> tmp(n);
while(k > 0)
{
int x = a[i] * a[i];
int y = a[j] * a[j];
if (x > y)
{
tmp[--k] = x;
i ++;
}
else
{
tmp[--k] = y;
j --;
}
}
return tmp;
}
};