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.
解题思路:
与3Sum一样
Java code:
public int threeSumClosest(int[] num, int target) { Arrays.sort(num); int closestNum = Integer.MAX_VALUE; for(int i = 0; i < num.length - 2; i++){ int j = i+1; int t = num.length - 1; while(j < t){ int total = num[i] + num[j] + num[t] - target; if(total == 0){ return target; } closestNum = Math.abs(total) < Math.abs(closestNum) ? total : closestNum; if(total > 0){ t--; while(j < t && num[t] == num[t+1]) t--; }else{ j++; while(j < t && num[j] == num[j-1]) j++; } } while(i < num.length - 2 && num[i] == num[i+1]) i++; } return closestNum + target; }
No comments:
Post a Comment