leetcode 3Sum Closest
unknown
java
3 years ago
1.2 kB
5
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...