leetcode 3Sum Closest
unknown
java
3 years ago
1.2 kB
2
Indexable
class Solution { public int threeSumClosest(int[] nums, int target) { Arrays.sort(nums); for (int i = 0; i < nums.length-2; i++) { if (i != 0 && nums[i] == nums[i-1]) { continue; } helper(nums, i, target); } return ans; } private int ans = 0; private int absoluteVal = Integer.MAX_VALUE; private void helper(int[] nums, int idx, int target) { int start = idx+1, end = nums.length-1; while (start < end) { int val = nums[idx]+nums[start]+nums[end]-target; if (Math.abs(val) < absoluteVal) { ans = nums[idx]+nums[start]+nums[end]; absoluteVal = Math.abs(val); } if (val == 0) { return; } if (val < 0) { while (start < end && nums[start] == nums[start+1]) { start++; } start++; } else { while (start < end && nums[end] == nums[end-1]) { end--; } end--; } } } }
Editor is loading...