本文共 1149 字,大约阅读时间需要 3 分钟。
class Solution { public int threeSumClosest(int[] nums, int target) { Arrays.sort(nums); int best = 100000000; for(int i = 0; i < nums.length; i++) { if(i > 0 && nums[i] == nums[i - 1]) { continue; } int L = i + 1; int R = nums.length - 1; while(L < R) { int sum = nums[i] + nums[L] + nums[R]; if(sum == target) { return sum; } //更新答案 if(Math.abs(sum - target) < Math.abs(best - target)) { best = sum; } if(sum > target) { //移动的时候先去重 while(L < R && nums[R] == nums[R - 1]) { R--; } R--; }else { //移动的时候先去重 while(L < R && nums[L] == nums[L + 1]) { L++; } L++; } } } return best; }}
转载地址:http://llhzi.baihongyu.com/