beats 85%
和上一题3Sum一样的思想,但是扫描到一个三元组检查一下是不是最优的,复杂度n平方,很重要的一点是监测到sum==target的时候直接return,这样从beats 22%一下子提高到85%
public class Solution {
public int threeSumClosest(int[] num, int target) {
int result = num[0] + num[1] + num[num.length - 1];
Arrays.sort(num);
for (int i = 0; i < num.length - 2; i++) {
int start = i + 1, end = num.length - 1;
while (start < end) {
int sum = num[i] + num[start] + num[end];
if (Math.abs(sum - target) < Math.abs(result - target)) {
result = sum;
if(result==target)
return target;
}
if (sum > target) {
end--;
}
else {
start++;
}
}
}
return result;
}
}