3Sum Closest
问题:
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.
思路:
典型的双指针问题
我的代码:
public class Solution { public int threeSumClosest(int[] num, int target) { int min = Integer.MAX_VALUE; if(num == null || num.length < 3) return min; int res = num[0] + num[1] + num[2]; Arrays.sort(num); for(int i = 0; i < num.length - 2; i++) { int val = num[i]; int left = i + 1; int right = num.length - 1; while(left < right) { int sum = val + num[left] + num[right]; int gap = Math.abs(target - sum); if(min > gap) { min = gap; res = sum; } if(target == sum) { return target; } else if(target > sum) { left++; } else { right--; } } } return res; } }
原文:http://www.cnblogs.com/sunshisonghit/p/4335386.html