有序数组的平方

class Solution {
public:
    vector<int> sortedSquares(vector<int>& nums) {
        vector<int>arry(nums.size());
        int k = nums.size() - 1;
       for(int i = 0, j = nums.size()-1;i<=j;) 
        {

            if (nums[i] * nums[i] > nums[j] * nums[j]) {
                arry[k--] = nums[i] * nums[i];
                i++;
            }
            else {
                arry[k--] = nums[j] * nums[j];
                j--;
            }
            
        }
return arry;
    }
};

这段代码是一个解决问题的函数,函数名为 sortedSquares。它接受一个整数数组 nums,并返回一个新的数组 arry,其中每个元素都是原始数组 nums 中元素的平方。

函数的实现思路是使用双指针法。定义两个指针 ij,分别指向数组的开头和结尾。通过比较两个指针指向的元素的平方大小,将较大的平方值放入新数组 arry 的末尾,并将相应的指针向内移动。重复这个过程,直到两个指针相遇。

具体而言,循环条件是 i<=j,表示当两个指针相等或者交叉时结束循环。在每一次循环中,比较 nums[i] * nums[i]nums[j] * nums[j] 的大小关系,如果前者大,则将 nums[i] * nums[i] 放入 arry[k],并将指针 i 向后移动;否则,将 nums[j] * nums[j] 放入 arry[k],并将指针 j 向前移动。最后,返回新数组 arry

请注意,此代码未给出完整的类定义和包含必要的头文件,只给出了函数实现部分。如果要使用该函数,请确保在正确的上下文中进行调用并传入合适的参数

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值