前期算错了一个
if (Math.abs(temp-target) > Math.abs(target - num)) {//接近程度 temp = Math.abs(target - num));//值越小 越接近 应该赋值为temp = num; }
进行修改代码
class Solution { public int threeSumClosest(int[] nums, int target) { int temp = nums[0] + nums[1] + nums[2];//接近指数 Arrays.sort(nums); //负-> target <-正 转化为相减取整数最小 for (int i = 0; i < nums.length; i++) { int j = i + 1; int z = nums.length - 1; while (j < z) { int num = nums[i] + nums[j] + nums[z]; if (Math.abs(temp-target) > Math.abs(target - num)) {//接近程度 temp = num;//值越小 越接近 } if (target - num > 0) { j++; } else if (target - num < 0) { z--; } else return target; } } return temp; } }
在这里进行优化 超过87%
for (int i = 0; i < nums.length-2; i++) {...}