leetcode16. 3Sum Closest
2017-11-03 10:48
417 查看
思路:
利用2sum方法来做,最接近就是相差绝对值当前最小
利用2sum方法来做,最接近就是相差绝对值当前最小
class Solution { public: int threeSumClosest(vector<int>& nums, int target) { vector<int>::iterator iter = nums.begin(); vector<int>::iterator iter_end = nums.end(); long long int threeSumValue = 0; long long int temp = 0; long long int threeSumGap = INT_MIN; threeSumGap *= - 1; while (iter != iter_end) { temp = *iter + twoSum(nums, target - *iter, iter - nums.begin()); if (abs(temp - target) < threeSumGap) { threeSumGap = abs(temp - target); threeSumValue = temp; } iter++; } return threeSumValue; } int twoSum(vector<int> numsCopy, int target, int pos) { numsCopy.erase(numsCopy.begin() + pos); sort(numsCopy.begin(), numsCopy.end()); //copy(numsCopy.begin(), numsCopy.end(), ostream_iterator<int>(cout, "\n")); vector<int>::iterator iter = numsCopy.begin(); vector<int>::iterator iter_end = numsCopy.end(); vector<int>::iterator left = iter; long long int gap = INT_MIN; gap *= -1; long long int temp = 0; iter_end--; vector<int>::iterator right = iter_end; while (iter != iter_end) { temp = *iter + *iter_end - target; if (temp<0) { if (abs(temp)<gap) { left = iter; right = iter_end; gap = abs(temp); } ++iter; } else if (temp>0) { if (abs(temp)<gap) { left = iter; right = iter_end; gap = abs(temp); } iter_end--; } else { left = iter; right = iter_end; gap = 0; break; } } return *left + *right; } };
相关文章推荐
- LeetCode 16. 3Sum Closest
- leetcode16. 3Sum Closest
- LeetCode 16. 3Sum Closest
- leetcode 16. 3Sum Closest
- leetcode16. 3Sum Closest
- Leetcode16. 3Sum Closest
- leetcode-16. 3Sum Closest
- leetcode 16. 3Sum Closest
- 【leetcode】16. 3Sum Closest
- 【C++】【LeetCode】15. 3Sum & 16. 3Sum Closest & 18. 4Sum
- leetcode_middle_99_16. 3Sum Closest
- Leetcode 16. 3Sum Closest
- leetcode16. 3Sum Closest
- LeetCode16. 3Sum Closest
- leetcode 16. 3Sum Closest
- LeetCode-16. 3Sum Closest
- 【LeetCode】16. 3Sum Closest
- leetcode 16. 3Sum Closest
- Leetcode 1. Two Sum & 15. 3Sum & 16. 3Sum Closest & 18. 4Sum
- LeetCode 16. 3Sum Closest