977. 有序数组的平方

class Solution {
public:
    vector<int> sortedSquares(vector<int>& nums) {
        vector<int> res(nums.size(), 0); // 创建一个和nums大小相同的结果数组,初始值为0
        int size = nums.size() - 1; // 初始化一个指向结果数组末尾的指针
        int i = 0, j = size; // 初始化两个指针i和j,分别指向nums的开始和末尾

        while (i <= j) {
            int a = nums[i] * nums[i]; // 计算nums[i]的平方
            int b = nums[j] * nums[j]; // 计算nums[j]的平方

            // 比较两个平方数的大小,并将较大的一个放在结果数组的末尾
            if (a > b) {
                res[size] = a; // 如果nums[i]的平方大,则将其放入结果数组
                i++; // 移动指针i
            } else {
                res[size] = b; // 否则将nums[j]的平方放入结果数组
                j--; // 移动指针j
            }
            size--; // 结果数组的下一个填充位置
        }

        return res; // 返回结果数组
    }
};