• [LeetCode]3Sum


    题目描述:(链接)

    Given an array S of n integers, are there elements abc in S such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero.

    Note:

    • Elements in a triplet (a,b,c) must be in non-descending order. (ie, a ≤ b ≤ c)
    • The solution set must not contain duplicate triplets.

           For example, given array S = {-1 0 1 2 -1 -4},

         A solution set is: (-1, 0, 1), (-1, -1, 2)


    解题思路:

    先对数组进行排序,然后遍历数组,左右夹逼。

    class Solution {
    public:
        vector<vector<int>> threeSum(vector<int>& nums) {
            vector<vector<int>> result;
            if (nums.size() < 3) { return result; }
            sort(nums.begin(), nums.end());
            
            auto last = nums.end();
            for (auto i = nums.begin(); i != last - 2; ++i) {
                if (i > nums.begin() && *i == *(i - 1)) { continue; }
                auto j = i + 1;
                auto k = last - 1;
                
                while (j < k) {
                    int sum = *i + *j + *k;
                    if (sum < 0) {
                        ++j;
                        while (*j == *(j - 1) && j < k) { ++j; }
                    } else if (sum > 0) {
                        --k;
                        while (*k == *(k + 1) && j < k) { --k; }
                    } else {
                        result.push_back({*i, *j, *k});
                        ++j;
                        --k;
                        while (*j == *(j - 1) && *k == *(k + 1) && j < k) { ++j; }
                    }
                }
    
            }
            
            return result;
        }
    };
    

      

  • 相关阅读:
    html 带渐变的吸顶效果 vue
    Linux添加环境变量
    C#集合通论
    Android adb 命令导出数据库
    查看签名方式及签名信息
    啥 啥 啥,服务治理是个啥
    令牌桶、漏斗、冷启动限流在sentinel的应用
    MySQL事务
    MySQL优化
    MySQL视图、存储过程、函数、触发器
  • 原文地址:https://www.cnblogs.com/skycore/p/4853173.html
Copyright © 2020-2023  润新知