前期算错了一个
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++) {...}
京公网安备 11010502036488号