您的位置:首页 > 其它

[LeetCode] 16. 3Sum Closest

2018-02-07 11:37 337 查看

16. 3Sum Closest

转化思想

头尾指针

题目

思路

转化思想

将问题转化为求三数和为target的问题。

复杂性分析:

时间复杂度:O(n^2).

空间复杂度:O(1).

题解

class Solution {
public:
int threeSumClosest(vector<int>& nums, int target) {
int ans = 0, dif = INT_MAX, len = nums.size();
sort(nums.begin(), nums.end());

for (int i = 0; i < len-2; i++) {
if (i > 0 && nums[i] == nums[i-1])
continue;
int begin = i+1, end = len-1;

while (begin < end) {
int sum = nums[i] + nums[begin] + nums[end];
if (sum == target)
return target;
else if (sum < target)
begin++;
else
end--;
int temp = abs(target - sum);
if (temp < dif) {
dif = temp;
ans = sum;
}

}
}
return ans;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: