題目鏈接:Squares of a Sorted Array
解題思路:
兩種方法,一種是暴力,先求平方再排序;另一種稍微改進,每次從兩邊找絕對值較大的那個數,求平方。
法一:
class Solution {
public:
vector<int> sortedSquares(vector<int>& A) {
for (int &a:A)
{
a = a*a;
}
sort(A.begin(), A.end());
return A;
}
};
法二:
class Solution {
public:
vector<int> sortedSquares(vector<int>& A) {
int len = A.size();
int l = 0;
int r = len-1;
vector<int> B(A.size(), 0);
for (int k = len-1; k >= 0; --k)
{
if(abs(A[l]) >= abs(A[r]))
B[k] = pow(A[l++], 2);
else
B[k] = pow(A[r--], 2);
}
return B;
}
};