LeetCode题解之 3Sum

1、题目描述

2、问题分析

使用hashtable 的方法做,解法不是最优的,思路简单直观。

3、代码

 1 vector<vector<int>> threeSum(vector<int>& nums) {
 2         vector<vector<int>> result ;
 3      
 4         if( nums.size()  < 3 ){
 5             return result ;
 6         }  
 7         
 8         sort(nums.begin() ,nums.end());
 9         map<int,int> m;
10         for( int i = 0;i <nums.size() ; ++i){
11             m[nums[i]] = i;
12         }
13         
14         for( int i = 0; i < nums.size() - 2; ++i){
15             if( i > 0 && nums[i]  == nums[i-1] ) continue;
16             for( int j = i+1; j < nums.size() - 1; j++ ){
17                 if( j > i+1 && nums[j] == nums[j-1]) continue ;
18                 auto it = m.find( -(nums[i] + nums[j]) );
19                 if( it != m.end() && it->second > j ){
20                     vector<int> r{nums[i],nums[j],it->first};
21                     result.push_back( r );
22                 }
23             }
24         }
25         
26         return result;
27         
28     }
pp
原文地址:https://www.cnblogs.com/wangxiaoyong/p/9308650.html