1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | public class Solution { public int threeSumClosest(int[] nums, int target) { Arrays.sort(nums); int diff = Integer.MAX_VALUE; for (int i = 0; i < nums.length-2; i++){ int twoSum = twoSumClosest(nums, i+1, target-nums[i]); int localDiff = target-(nums[i]+twoSum); if (localDiff == 0){ return target; } diff = Math.abs(diff)<Math.abs(localDiff)?diff:localDiff; } return target+diff; } public int twoSumClosest(int[] nums, int starting, int target){ int left = starting; int right = nums.length-1; int diff = Integer.MAX_VALUE; while (left < right){ int localDiff = target-(nums[left]+nums[right]); if (localDiff == 0) return target; if (localDiff > 0) left++; else right--; diff = Math.abs(diff)<Math.abs(localDiff)?diff:localDiff; } return target+diff; } } |
Monday, November 23, 2015
[leetcode]3 sum closest
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment