-
-
Notifications
You must be signed in to change notification settings - Fork 739
[LeetCode] 16. 3Sum Closest #16
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
可以优化一下, 当nums[i] *3 > target 的时候直接return nums[i]+nums[i+1]+nums[i+2] 和当前closest中最接近的那个 |
已添加,多谢指出~ |
if (nums[i] * 3 > target) return min(closest, nums[i] + nums[i + 1] + nums[i + 2]); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
请点击下方图片观看讲解视频
Click below image to watch YouTube Video
Given an integer array
nums
of lengthn
and an integertarget
, find three integers innums
such that the sum is closest totarget
.Return the sum of the three integers.
You may assume that each input would have exactly one solution.
Example 1:
Example 2:
Constraints:
3 <= nums.length <= 500
-1000 <= nums[i] <= 1000
-104 <= target <= 104
这道题让我们求最接近给定值的三数之和,是在之前那道 3Sum 的基础上又增加了些许难度,那么这道题让返回这个最接近于给定值的值,即要保证当前三数和跟给定值之间的差的绝对值最小,所以需要定义一个变量 diff 用来记录差的绝对值,然后还是要先将数组排个序,然后开始遍历数组,思路跟那道三数之和很相似,都是先确定一个数,然后用两个指针 left 和 right 来滑动寻找另外两个数,每确定两个数,求出此三数之和,然后算和给定值的差的绝对值存在 newDiff 中,然后和 diff 比较并更新 diff 和结果 closest 即可,代码如下:
Github 同步地址:
#16
类似题目:
3Sum Smaller
3Sum
参考资料:
https://leetcode.com/problems/3sum-closest/
https://leetcode.com/problems/3sum-closest/discuss/7883/C%2B%2B-solution-O(n2)-using-sort
https://leetcode.com/problems/3sum-closest/discuss/7872/Java-solution-with-O(n2)-for-reference
LeetCode All in One 题目讲解汇总(持续更新中...)
(欢迎加入博主的知识星球,博主将及时答疑解惑,并分享刷题经验与总结,快快加入吧~)
微信打赏
Venmo 打赏
---|---
The text was updated successfully, but these errors were encountered: