16. 3Sum Closest
2017-10-20 21:56
363 查看
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.
java
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).
java
class Solution { public int threeSumClosest(int[] nums, int target) { if (nums == null || nums.length < 3) { return 0; } Arrays.sort(nums); int diff = 0; int ref = Integer.MAX_VALUE; for (int i = 0; i < nums.length - 2; i++) { int temp = util(nums, i + 1, nums[i], target); if (ref > Math.abs(temp - target)) { ref = Math.abs(temp - target); diff = temp; } } return diff; } private int util(int[] nums, int start, int val, int target) { int left = start; int right = nums.length - 1; int diff = 0; int ref = Integer.MAX_VALUE; int value = 0; while (left < right) { value = val + nums[left] + nums[right]; if (left < right && value < target) { left++; if (ref > Math.abs(value - target)) { ref = Math.abs(value - target); diff = value; } } if (left < right && value > target) { right--; if (ref > Math.abs(value - target)) { ref = Math.abs(value - target); diff = value; } } if (left < right && value == target) { diff = value; break; } } return diff; } }
相关文章推荐
- LeetCode *** 16. 3Sum Closest
- 16. 3Sum Closest
- leetcode 16. 3Sum Closest
- 16. 3Sum Closest
- leetcode-16. 3Sum Closest
- LeectCode 16. 3Sum Closest *** 对撞指针
- 【C++】【LeetCode】15. 3Sum & 16. 3Sum Closest & 18. 4Sum
- leetcode 16. 3Sum Closest
- Leetcode 16. 3Sum Closest
- 16. 3Sum Closest
- LeetCode16. 3Sum Closest
- 16. 3Sum Closest
- 16. 3Sum Closest
- leetcode-java-16. 3Sum Closest
- 16. 3Sum Closest
- 16. 3Sum Closest
- 1. Two Sum && 167. Two Sum II - Input array is sorted && 15. 3Sum && 16. 3Sum Closest && 18. 4Sum
- Leetcode16. 3Sum Closest
- LeetCode 16. 3Sum Closest
- leetcode16. 3Sum Closest