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.
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).
[分析] 基于 3 sum的思路求解,先排序,选定第一个元素,然后夹逼法求出当前第一个元素下最接近target的 sum3。注意到closest初始化不要写成整数的最大最小值,不然比较获取局部最优时(if (Math.abs(sum3 - target) < Math.abs(closest - target)))会溢出导致错误结果。
public int threeSumClosest(int[] nums, int target) {
if (nums == null || nums.length < 3)
return Integer.MAX_VALUE;
int N = nums.length;
Arrays.sort(nums);
int closest = nums[0] + nums[1] + nums[2];
int sum3;
for (int k = 0; k < N - 2; k++) {
if (k > 0 && nums[k] == nums[k - 1])
continue;
int i = k + 1, j = N - 1;
while (i < j) {
sum3 = nums[i] + nums[j] + nums[k];
if (sum3 == target) {
return target;
} else if (sum3 > target) {
if (Math.abs(sum3 - target) < Math.abs(closest - target))
closest = sum3;
while (i < --j && nums[j] == nums[j + 1]);
} else {
if (Math.abs(sum3 - target) < Math.abs(closest - target))
closest = sum3;
while (++i < j && nums[i] == nums[i - 1]);
}
}
}
return closest;
}
分享到:
相关推荐
c c语言_leetcode 0016_three_sum_closest.zip
js js_leetcode题解之16-3sum-closest.js
- **2.1.9 3Sum Closest** - 找到三个数之和最接近给定目标值的组合。 - 实现思路:类似于3Sum,但在查找过程中记录与目标值差距最小的组合。 - **2.1.10 4Sum** - 在数组中找到四个数之和等于零的所有组合。 ...
- 3Sum / 3Sum Closest / 4Sum: 这些题目都涉及到在数组中寻找具有特定和的数字组合,这通常需要用到双指针技术。 - Remove Nth Node From End of List: 给定一个链表,删除链表中的第n个节点。 - Valid Parentheses...
3sum-closest 49组字谜 更新 2020-1-16 123 已完成问题447 个回旋镖 更新 2020-1-17 124 已完成问题149 最大单线点数 更新 2020-1-18 126题已完成 56 个合并间隔 86 分区列表 98 验证二进制搜索树 9 审查问题 第105...
4. **最近点对**:在“最接近的三数之和”(3Sum Closest)问题中,双指针配合哈希表可以快速找到与目标值最接近的三数之和。 5. **滑动窗口最大值/最小值**:例如“数组中的最长连续序列”(Longest Consecutive ...
java lru leetcode :ice_cream: ...Closest 20 Valid Parentheses 26 Remove Duplicates from Sorted Array 48 Rotate Image 53 Maximum Subarray 55 Jump Game 56 Merge Intervals 64 Minimum Path Sum 73
答案LeetCode_1_TwoSum LeetCode 问题:给定一个整数数组,找出两个数字,使它们相加为特定的目标数字。 函数 twoSum 应该返回两个数字的索引,使它们相加为目标,其中 index1 必须小于 index2。 请注意,您返回的...
- 3 Sum Closest(三数之和最接近) - Remove Duplicates from Sorted Array(删除有序数组中的重复项) - Remove Duplicates from Sorted Array II(删除排序数组中的重复项II) - Merge Sorted Array(合并两...
9. 题目16:3Sum Closest (最接近的三数之和) 给定一个包含n个整数的数组nums,找出其中三个数使得它们的和与目标值target最接近。使用排序和双指针法可以高效解决。 10. 题目68:文本Justify (文本左右对齐) 该...
leetcode 和 oj #问题列表(按标题升序) 标题|添加日期|AC 利率 ---|---|---|--- 3Sum |2012-01-17|16.4% 3Sum Closest|2012-01-18|26.8% 4Sum|2012-01-26 |21.3% 二进制加法|2012-04-02|25.6% 两个数相加|2011-11-...
16 | [3 Sum Closest](https://leetcode.com/problems/3sum-closest/) | [C++](./C++/3sum-closest.cpp) [Python](./Python/3sum-closest.py) | _O(n^2)_ | _O(1)_ | Medium || Two Pointers 18| [4 Sum]...
描述中的 "3Sum Closest" 是指三数之和最接近某个特定值的问题,通常在LeetCode等在线编程平台上被讨论。 这个问题的基本设定是:给定一个整数数组 `nums` 和一个目标整数 `target`,你需要找出数组中三个整数,...
LeetCode刷题总结 1.Two Sum 2.Add Two Numbers 3.Longest Substring Without Repeating Characters 4.Median of Two Sorted Arrays 5.Longest Palindromic Substring (Manacher算法待完成) 6.ZigZag Conversion 7....
leetcode 2 和 c LeetCode_record(C++) Leetcode 问题 我已经完成了解决方案和简要说明。 目前,我正在做热门面试问题。 完毕 ...15-3总和 16-3Sum Closest(无解,类似3Sum) 454-4和II 正在做 18-4和
16. 3Sum Closest 17. Letter Combinations of a Phone Number 18. 4Sum 19. Remove Nth Node From End of List 20. Valid Parentheses 21. Merge Two Sorted Lists 22. Generate Parentheses 23. Merge k Sorted ...
leetcode题库 LeetCode 题解合集 本仓库展示了LeetCode题库中部分题目的解法(持续更新),所有代码均采用C++编写...3Sum.cpp 最接近的三数之和 3Sum Closest .cpp 20 有效的括号 Valid Parentheses.cpp 22 括号生成 G
leetcode 530 ** LeetCode ...3Sum 016 3Sum Closest 017 Letter Combinations of a Phone Number 018 4Sum 020 Valid Parentheses 022 Generate Parentheses 028 Implement strStr() 031 Next Permutat
leetcode 2 sum c leetcode 力扣(Leetcode)编程题,JavaScript版本。 编号 中文题目 ...3Sum 中等 16 3Sum Closest 中等 17 Letter Combinations of a Phone Number DFS 中等 18 4Sum 中等 19 Remo