标签:style blog color os io ar for div sp
Given an array S of n integers, find three integers in S such that the sum is closest to a given number, target. Return the sum of the three integers. You may assume that each input would have exactly one solution.
For example, given array S = {-1 2 1 -4}, and target = 1.
The sum that is closest to the target is 2. (-1 + 2 + 1 = 2).
思路:
1 class Solution { 2 public: 3 int threeSumClosest( vector<int> &num, int target ) { 4 int delta = INT_MAX; 5 sort( num.begin(), num.end() ); 6 for( int i = (int)num.size()-1; i > 1; --i ) { 7 int s = 0, e = i-1; 8 while( s < e ) { 9 int sum = num[i] + num[s] + num[e]; 10 if( sum == target ) { 11 return target; 12 } else if( sum < target ) { 13 ++s; 14 } else { 15 --e; 16 } 17 if( abs( sum-target ) < abs( delta ) ) { delta = sum - target; } 18 } 19 } 20 return target + delta; 21 } 22 };
标签:style blog color os io ar for div sp
原文地址:http://www.cnblogs.com/moderate-fish/p/3960218.html