题目链接
题目描述
实现代码
思路:首先固然是需要进行至少一遍遍历的,我们先对数组进行排序便于后续操作,假设我们进行第一次遍历获取三个数中的第一个数,然后对其余两个通过头尾双指针的形式进行选取,按照缩小与target的距离为原则进行指针移动,最终求得解;实现代码如下:
class Solution {public int threeSumClosest(int[] nums, int target) {Arrays.sort(nums);int ans = nums[0] + nums[1] + nums[2];for(int i=0;i<nums.length;i++) {int start = i+1, end = nums.length - 1;while(start < end) {int sum = nums[start] + nums[end] + nums[i];if(Math.abs(target - sum) < Math.abs(target - ans))ans = sum;if(sum > target)end--;else if(sum < target)start++;elsereturn ans;}}return ans;}}
