【数组】16. 最接近的三数之和

题目:

 

 

解答:

 1 class Solution {
 2 public:
 3     int threeSumClosest(vector<int>& nums, int target) 
 4     {
 5         sort(nums.begin(),nums.end());
 6         
 7         int ans = nums[0] + nums[1] + nums[2];
 8         for(int i=0;i < nums.size();i++) 
 9         {
10             int st = i + 1;
11             int ed = nums.size() - 1;
12             while(st < ed) 
13             {
14                 int sum = nums[st] + nums[ed] + nums[i];
15 
16                 if(abs(target - sum) < abs(target - ans)) 
17                 {
18                     ans = sum;
19                 }
20 
21                 if(sum == target) 
22                 {
23                     return ans;
24                 }
25                 else if(sum < target) 
26                 {
27                     st++;
28                 }
29                 else 
30                 {
31                     ed--;
32                 }
33             }
34         }
35         return ans;
36     }
37 };

 

posted @ 2020-05-05 14:51  梦醒潇湘  阅读(142)  评论(0)    收藏  举报