美文网首页
双指针应用七:三数之和

双指针应用七:三数之和

作者: 程一刀 | 来源:发表于2021-05-11 10:40 被阅读0次

题目地址: https://leetcode-cn.com/problems/3sum/

题目描述: 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。
注意: 答案中不可以包含重复的三元组。

参考代码:

/// 三数之和
class Solution1 {
public:
    vector<vector<int>> threeSum(vector<int>& nums) {
        vector<vector<int>> result;
        //排序
        sort(nums.begin(),nums.end());
        
        if (nums.size() == 0) {
            return  result;
        }
        
        for (int i = 0; i< nums.size(); i++) {
            int left = i+1;
            int right = nums.size()-1;
            
            if (nums[i] > 0) {
                break;
            }
            if (i>0&&nums[i-1] == nums[i]) {
                continue;
            }
            while (left < right) {
                
                if (nums[i] + nums[left] + nums[right] == 0) {
                    vector<int> item = {nums[i],nums[left],nums[right]};
                    result.push_back(item);
                    while (left + 1 < right &&nums[left] == nums[left+1]) {
                        left ++;
                    }
                    while (right - 1 >left &&nums[right] == nums[right-1]) {
                        right--;
                    }
                    left++;
                    right--;
                } else if (nums[i] + nums[left] + nums[right]  > 0 ) {
                    
                    right--;
                } else {
                    left ++;
                }
                
                
            }
        }
        return result;
        
    }
};

参考链接: https://github.com/youngyangyang04/leetcode-master/blob/master/problems/0015.%E4%B8%89%E6%95%B0%E4%B9%8B%E5%92%8C.md

相关文章

  • 双指针应用七:三数之和

    题目地址: https://leetcode-cn.com/problems/3sum/[https://leet...

  • algrithrom

    求和问题,双指针解决 done 两数之和 三数之和 最接近三数之和 四数之和 链表反转问题 done 链表反转 链...

  • 双指针--三数之和

    目录[https://www.jianshu.com/p/85e18c21317a] 题号[https://lee...

  • 双指针法(算法)

    案例: 盛最多水的容器、三数之和、最接近的三数之和 双指针法一般对应于有序数组的情况,通过调节指针(左右移动),...

  • LeetCode咸鱼记录

    15. 三数之和 先排序,然后用双指针往中间移动查找符合条件的数。

  • [双指针学习-待补充]最接近三数之和

    依旧是求三数之和,这个暴力可解但是最好的方法是双指针。lc16 双指针 待补充学习

  • 常用算法

    以下题号如无说明表示在中文leetcode上的题号双指针:15(三数之和)

  • LeetCode-16 最接近的三数之和

    题目:16. 最接近的三数之和 难度:中等 分类:数组 解决方案:双指针 今天我们学习第16题最接近的三数之和,这...

  • LeetCode-15 三数之和

    题目:15. 三数之和 难度:中等 分类:数组 解决方案:双指针 今天我们学习第15题三数之和,这是一道中等题。像...

  • 双指针应用八:四数之和

    题目地址: https://leetcode-cn.com/problems/4sum/[https://leet...

网友评论

      本文标题:双指针应用七:三数之和

      本文链接:https://www.haomeiwen.com/subject/mfwbdltx.html