LeetCode题解——3Sum Closest

题目

给定一个数组,和一个指定的值,找出数组中3个数,它的和最接近这个指定值,并返回这个和。

 

解法

和上一题找3个数的和为0一样,先排序再遍历,这一次不需要记录路径。

 

代码

 1 class Solution {  2 public:  3     int threeSumClosest(vector<int> &num, int target) {  4         int result, min_gap = INT_MAX;  5         sort(num.begin(), num.end());  //先排序  6         

 7         for(int a = 0; a < num.size() - 2; ++a)  8             for(int b = a + 1, c = num.size() - 1; b < c; )  9  { 10                 int sum = num[a] + num[b] + num[c]; 11                 int gap = sum - target; 12                 

13                 if(gap == 0)  //找到相等的值,直接返回 14                     return target; 15                     

16                 if(abs(gap) < min_gap) 17  { 18                     min_gap = abs(gap); 19                     result = sum; 20  } 21                 

22                 if(sum > target) 23                     --c; 24                 else

25                     ++b; 26  } 27         return result; 28  } 29 };

 

你可能感兴趣的:(LeetCode)