image.png

解题思路

排序 双指针

image.png

  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. }