这段代码有一个问题在于循环条件的判断。当前的循环条件是i != k
,但实际上应该是 i <= k
。这是因为在每一次迭代中,你都需要检查 nums[i]*nums[i]
和 nums[k]*nums[k]
的大小,并根据结果进行更新。
以下是修改过的代码:
class Solution {
public:
vector<int> sortedSquares(vector<int>& nums) {
int n = nums.size();
int left = 0, right = n - 1;
vector<int> result(n);
for (int i = n - 1; i >= 0; --i) {
if (abs(nums[left]) > abs(nums[right])) {
result[i] = nums[left] * nums[left];
++left;
} else {
result[i] = nums[right] * nums[right];
--right;
}
}
return result;
}
};
在修改后的代码中,我们将循环条件修改为 i >= 0
,同时也进行了其他一些细微的改动来确保算法正确性。现在代码应该能够按照要求返回一个平方值升序排序的向量。
内容由零声教学AI助手提供,问题来源于学员提问