zoukankan      html  css  js  c++  java
  • Leetcode 15. 3Sum

    15. 3Sum

    • Total Accepted: 130571
    • Total Submissions: 670539
    • Difficulty: Medium

    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: 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]
    ]

    思路:基本思路和Leetcode 16. 3Sum Closest类似,但要注意去除集合元素完全相同的集合,就是去除相同集合。

    代码:

    class Solution {
    public:
        vector<vector<int>> threeSum(vector<int>& nums) {
            sort(nums.begin(),nums.end());
            vector<vector<int>> res;
            int i,j,k,n=nums.size(),temp;
            for(i=0;i<n;i++){
                j=i+1;
                k=n-1;
                while(j<k){
                    int ans=nums[i]+nums[j]+nums[k];
                    if(ans==0){
                        res.push_back({nums[i],nums[j],nums[k]});
                        while(j<k&&nums[j]==nums[j+1]) j++;
                        while(k>j&&nums[k]==nums[k-1]) k--;
                    }
                    if(ans>=0) k--;
                    if(ans<=0) j++;
                }
                while(i+1<n&&nums[i]==nums[i+1]) i++;
            }
            return res;
        }
    };
  • 相关阅读:
    ISpout源码解析
    storm完全分布式部署
    sqoop工具
    sqoop安装步骤
    HBASE常用配置
    linux命令无法使用:命令行输入:set>lll cat lll echo $PATH
    BubbleSort
    QuickSortWithRec
    面试题
    Nginx配置安装
  • 原文地址:https://www.cnblogs.com/Deribs4/p/5698806.html
Copyright © 2011-2022 走看看