题目描述:

方法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;
    }
};