在你提供的代码中,有几个问题需要注意:
在
for
循环中,缺少对left
和right
的更新操作,导致死循环。你需要在内部条件判断和处理逻辑后更新它们的值。unordered_set
是无序容器,不能使用索引进行遍历和访问元素。因此,在最后将结果插入到tar
时,需要使用迭代器进行访问。
以下是修改后的代码:
class Solution {
public:
vector<vector<int>> threeSum(vector<int>& nums) {
unordered_set<vector<int>> arr;
sort(nums.begin(), nums.end());
int len = nums.size();
for (int left = 0; left < len - 2; ++left) {
int right = len - 1;
int i = left + 1;
while (i < right) {
int sum = nums[left] + nums[right] + nums[i];
if (sum == 0)
arr.insert({nums[left], nums[right], nums[i]});
else if (sum > 0)
right--;
else
i++;
}
}
vector<vector<int>> tar;
for (auto it = arr.begin(); it != arr.end(); ++it) {
tar.push_back(*it);
}
return tar;
}
};
这样应该能够解决代码中的问题,并返回正确的结果。如果还有其他问题,请随时提问。
内容由零声教学AI助手提供,问题来源于学员提问