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 }