相关标签
一、题目要求
二、题解和代码实现
1.题解
2.代码实现
代码如下(示例):
class Solution {
public int threeSumClosest(int[] nums, int target) {
Arrays.sort(nums);//排序
int res = nums[0]+nums[1]+nums[2];//设置前三个元素相加为最终返回值
for (int i = 0; i < nums.length; i++) {//利用i指针,固定三个元素中一个元素
int state = i+1;//并且因为是排序过的,所以只需要用左指针在i+1
int end = nums.length-1;//右指针指向最后一个元素
while (state<end){//遍历
int sum = nums[state]+nums[end]+nums[i];//三个元素相加
if (Math.abs(sum-target)< Math.abs(res-target)){//判断步长
res = sum;
}
if (sum>target){//当sum大于target,说明右指针元素过大
end--;
}else if (sum<target){//当sum小于target,说明左指针元素过小
state++;
}else {//==时,因为只有唯一解,直接返回
return sum;
}
}
}
return res;
}
}