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
中元素的平方。
函数的实现思路是使用双指针法。定义两个指针 i
和 j
,分别指向数组的开头和结尾。通过比较两个指针指向的元素的平方大小,将较大的平方值放入新数组 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
。
请注意,此代码未给出完整的类定义和包含必要的头文件,只给出了函数实现部分。如果要使用该函数,请确保在正确的上下文中进行调用并传入合适的参数