题目链接

最接近的三数之和

题目描述

image.png

实现代码

思路:首先固然是需要进行至少一遍遍历的,我们先对数组进行排序便于后续操作,假设我们进行第一次遍历获取三个数中的第一个数,然后对其余两个通过头尾双指针的形式进行选取,按照缩小与target的距离为原则进行指针移动,最终求得解;实现代码如下:

  1. class Solution {
  2. public int threeSumClosest(int[] nums, int target) {
  3. Arrays.sort(nums);
  4. int ans = nums[0] + nums[1] + nums[2];
  5. for(int i=0;i<nums.length;i++) {
  6. int start = i+1, end = nums.length - 1;
  7. while(start < end) {
  8. int sum = nums[start] + nums[end] + nums[i];
  9. if(Math.abs(target - sum) < Math.abs(target - ans))
  10. ans = sum;
  11. if(sum > target)
  12. end--;
  13. else if(sum < target)
  14. start++;
  15. else
  16. return ans;
  17. }
  18. }
  19. return ans;
  20. }
  21. }