1. 首页
  2. 软件开发
  3. day-58 最接近的三数之和

day-58 最接近的三数之和

  • 发布于 2024-09-26
  • 1 次阅读


思路
双指针:首先利用Arrays.sort()函数对数组进行排序,通过枚举中间位置的那个数,题目就变为了双指针

解题过程
指针边界(right>i\&\&left

Code

class Solution {

    public int threeSumClosest(int[] nums, int target) {

        Arrays.sort(nums);
        int len=nums.length;
        int ans=nums[0]+nums[1]+nums[2];
        int num=Math.abs(ans-target);
        int left=0;
        int right=len-1;
        for(int i=1;i<len-1;i++){

            left=0;
            right=len-1;
            while(right>i&&left<i){

                if(Math.abs(nums[i]+nums[left]+nums[right]-target)<num){

                    ans=nums[i]+nums[left]+nums[right];
                    num=Math.abs(nums[i]+nums[left]+nums[right]-target);
                }
                if(nums[i]+nums[left]+nums[right]<=target)left++;
                else right--;
            }
        }
        return ans;
    }
}

作者:菜卷
链接:https://leetcode.cn/problems/3sum-closest/solutions/2927721/zui-jie-jin-de-san-shu-zhi-he-by-ashi-ji-jmb8/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

原文链接: https://blog.csdn.net/qq_53568730/article/details/142466994