class Solution { public: vector<int> sortedSquares(vector<int>& nums) { int j; j=nums.size()-1; int k=0; int a=nums.size()-1; vector<int> result(nums.size(),0); while(k<=j) { if(nums[j]*nums[j]>nums[k]*nums[k]) { result[a]=nums[j]*nums[j]; a--; j--; } else if(nums[j]*nums[j]<nums[k]*nums[k]) { result[a]=nums[k]*nums[k]; a--; k++; } else if(nums[j]*nums[j]==nums[k]*nums[k]) { result[a]=nums[k]*nums[k]; } } return result; } };
时间: 2024-02-14 10:29:25 浏览: 203
这段代码定义了一个名为 `Solution` 的类,其中有一个公有成员函数 `sortedSquares`。这个函数接受一个整型向量 `nums` 作为参数,并返回一个整型向量。
函数的目标是将 `nums` 中的每个元素平方后,对结果进行排序。具体实现如下:
1. 定义变量 `j` 并将其赋值为 `nums` 的大小减一,作为向量遍历的结束索引。
2. 定义变量 `k` 并将其赋值为 0,作为向量遍历的开始索引。
3. 定义变量 `a` 并将其赋值为 `nums` 的大小减一,用于记录结果向量 `result` 的索引。
4. 创建一个大小与 `nums` 相同的整型向量 `result`,所有元素初始化为 0。
5. 使用 while 循环,当 `k` 小于等于 `j` 时进行迭代:
- 如果 `nums[j]*nums[j]` 大于 `nums[k]*nums[k]`,将 `result[a]` 设置为 `nums[j]*nums[j]`,并将 `a` 和 `j` 分别减一。
- 如果 `nums[j]*nums[j]` 小于 `nums[k]*nums[k]`,将 `result[a]` 设置为 `nums[k]*nums[k]`,并将 `a` 和 `k` 分别减一。
- 如果 `nums[j]*nums[j]` 等于 `nums[k]*nums[k]`,将 `result[a]` 设置为 `nums[k]*nums[k]`。
6. 返回结果向量 `result`。
这段代码的作用是将输入向量 `nums` 中的每个元素平方后,按非递减顺序存储在结果向量 `result` 中,并返回该向量。
阅读全文