ZBLOG

class Solution { public: vector threeSum(vector& nums) { unordered_set arr; sort(nums.begin(), nums.end()); int len = nums.size(); int right = len - 1, left = 0; for (int i...

在你提供的代码中,有几个问题需要注意:

  1. for 循环中,缺少对 leftright 的更新操作,导致死循环。你需要在内部条件判断和处理逻辑后更新它们的值。

  2. 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助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=12707

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?