zoukankan      html  css  js  c++  java
  • 【medium】15. 3sum

    Given an array nums of n integers, are there elements abc in nums 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.

    Example:

    Given array nums = [-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) {
            sort(nums.begin(), nums.end()); //使用有序数组,处理重复
            
            vector<vector<int>> ans;
            
            int len = nums.size();
            int start, end, target;
            
            for (int i=0; i<len; i++){
                //利用有序数组,去掉重复的第三个数,在剩下的数里找two sum
                if (i>0 && nums[i] == nums[i-1])  
                    continue;
                
                start = i+1;
                end = len-1;
                target = 0-nums[i];
                
                // two sum
                while (start < end){
                    // start 位置起始有重复
                    if (start > i+1 && nums[start-1]==nums[start]){
                        start ++;
                        continue;
                    }
                    if (nums[start] + nums[end] == target){
                        vector<int> a;
                        a.push_back(nums[start]);
                        a.push_back(nums[end]);
                        a.push_back(-target);
                        ans.push_back(a);
                        start ++; // wrong
                    }
                    else if (nums[start] + nums[end] > target)
                        end --;
                    else
                        start ++;
                    
                }    
            }
            return ans;
        }
    };
  • 相关阅读:
    python中的编码问题
    CVPR2018 Tutorial 之 Visual Recognition and Beyond
    hdu 1376 Octal Fractions
    hdu 1329 Hanoi Tower Troubles Again!
    hdu 1309 Loansome Car Buyer
    hdu 1333 Smith Numbers
    hdu 1288 Hat's Tea
    hdu 1284 钱币兑换问题
    hdu 1275 两车追及或相遇问题
    hdu 1270 小希的数表
  • 原文地址:https://www.cnblogs.com/sherry-yang/p/10803921.html
Copyright © 2011-2022 走看看