题目描述:
方法1:直接平方,然后排序
class Solution {
public:
vector<int> sortedSquares(vector<int>& nums) {
for(int i=0;i<nums.size();i++){
nums[i] = nums[i] * nums[i];
}
sort(nums.begin(),nums.end());
return nums;
}
};
方法2:由于数组平方的最大值就在数组的两端,所以使用双指针,一头指针,一尾指针,再创建一个新数组,不断将绝对值大的数平方后放进新数组
class Solution {
public:
vector<int> sortedSquares(vector<int>& nums) {
int i = 0;
int j = nums.size()-1;
vector<int>result(nums.size(),0);
int k = j;
while(i<=j){
if(abs(nums[i]) < abs(nums[j])){
result[k--] = nums[j] * nums[j];
j--;
}
else{
result[k--] = nums[i] * nums[i];
i++;
}
}
return result;
}
};