16. 3Sum Closest Medium
来源:互联网 发布:外卖系统源码 编辑:程序博客网 时间:2024/05/16 12:35
这道题和之前那道 3Sum 的做法是一样的,大致思想是这样的:先排序,然后从第一个元素开始遍历,固定一个值之后,取接下来第一个元素和最后一个元素为左右坐标,分别为left,right,然后求和,如果小于target,让left加一,反之,让right加一,就这样遍历,效率最高。
这道题与 3Sum 不同的是,需要判断是不是离target最近,这里可以用两数相减后的绝对值来比较距离然后做取舍
代码如下(居然只有9ms)
class Solution {public: int threeSumClosest(vector<int>& nums, int target) { int size = nums.size(); if(size == 0)return 0; sort(nums.begin(), nums.end()); int now_sum = nums[0] + nums[1] + nums[2]; for (int i = 0; i < size; ++i) { int left = i + 1, right = size - 1; while(left < size && right < size && left < right){ //cout << nums[i] << " " << nums[left] << " " << nums[right] << endl; int try_sum = nums[left] + nums[right] + nums[i]; //cout << try_sum << " " << now_sum << endl; if(abs(try_sum - target) < abs(now_sum - target)) now_sum = try_sum; if(try_sum < target) left++; else if(try_sum > target) right--; else if(try_sum == target) break; } } return now_sum; }};
1 0
- 16. 3Sum Closest Medium
- Leetcode 16. 3Sum Closest (Medium) (cpp)
- Leetcode 16. 3Sum Closest (Medium) (java)
- Leetcode: 16. 3Sum Closest(Week5, Medium)
- 题解——Leetcode 16. 3Sum Closest 难度:Medium
- [Leetcode 16, Medium] 3Sum Closest
- Leet Code Medium 16 3Sum Closest
- Medium 16题 3Sum Closest
- [LeetCode] 016. 3Sum Closest (Medium) (C++/Java/Python)
- LeetCode-16-3Sum Closest(证明/KSum)-Medium
- 16. 3Sum Closest
- 16. 3Sum Closest
- 16. 3Sum Closest
- 16. 3Sum Closest
- 16. 3Sum Closest
- 16. 3Sum Closest
- 16. 3Sum Closest
- 16. 3Sum Closest
- Java数组的简单使用
- 主流浏览器内核
- 人脸识别之DeepFace
- 通过RobotFrameWork+APPIUM对安卓APK进行自动化测试
- Ajax总结
- 16. 3Sum Closest Medium
- 2017.03.18【NOIP 普及组】模拟赛C组 蚂蚁 题解
- 数据库并发机制和事务的隔离级别详解
- leetcode(43)Multiply Strings
- HashMap常见问题
- 16进制数字转成字符串
- C#迭代器——由foreach说开去
- zoj 1610 Count the Colors 线段树 区间更新
- c++远征之封装篇(拷贝构造函数)