Leetcode--3Sum Closest
2014-10-09 11:05
211 查看
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.
思路:用一个变量res保存当前最接近target的值,如果存在三个数的和值temp满足:abs(temp-target)<abs(res-target)
则更新res(res=temp)
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).
思路:用一个变量res保存当前最接近target的值,如果存在三个数的和值temp满足:abs(temp-target)<abs(res-target)
则更新res(res=temp)
class Solution { public: int threeSumClosest(vector<int> &num, int target) { int res=0x3f3f3f3f; if(num.size()<3) return res; sort(num.begin(),num.end()); for(int i=0;i<num.size()-2;i++) { if(i>0&&num[i]==num[i-1]) continue; int l=i+1; int r=num.size()-1; while(l<r) { if(l>i+1&&num[l]==num[l-1]) { l++; continue; } if(r<num.size()-1&&num[r]==num[r+1]) { r--; continue; } int temp=num[i]+num[l]+num[r]; if(temp==target) return target; else if(temp>target) { if(abs(temp-target)<abs(res-target)) res=temp; r--; } else if(temp<target) { if(abs(temp-target)<abs(res-target)) res=temp; l++; } } } return res; } };
相关文章推荐
- LeetCode -- 3Sum Closest
- Leetcode 16. 3Sum Closest
- Leetcode: 3Sum Closest
- [LeetCode] 16. 3Sum Closest
- leetcode:2sum,2sumSorted,3sum,3sumClosest,4sum,4sumII.[哈希表,双指针]
- 【leetcode】_3sum_closest
- LeetCode:3Sum Closest
- 【Leetcode】【Medium】3Sum Closest
- LeetCode 16 3Sum Closest
- leetcode刷题系列C++-3Sum Closest
- LeetCode 16 3Sum Closest
- Leetcode:3Sum Closest
- 算法分析与设计——LeetCode:16. 3Sum Closest
- LeetCode 16. 3Sum Closest
- 【Leetcode】之3Sum Closest
- [LeetCode]3Sum Closest
- Leetcode 3Sum Closest
- LeetCode:3Sum Closest
- leetcode16. 3Sum Closest
- LeetCode 16 3Sum Closest