16. 3Sum Closest

    xiaoxiao2021-03-25  143

    这道题和之前的3sum差不多,设置左右标兵left=i+1,right=len-1,这是选择和target最接近的sum,使用 Math.abs来计算,同时设定初始值error,循环遍历,直至找到最小的sum,代码如下:

    public static int threeSumClosest(int[] num, int target) { if (num==null||num.length<3) return 0; int len=num.length; Arrays.sort(num); int res=num[0]+num[1]+num[2]; int error=Math.abs(target-res); for (int i = 0; i < len-2; i++) { int left=i+1; int right=len-1; while (left<right) { int sum=num[i]+num[left]+num[right]; if (sum==target) { return sum; } else { if (Math.abs(sum-target)<error) { res=sum; error=Math.abs(sum-target); } if (sum>target) { right--; }else { left++; } } } } return res; }
    转载请注明原文地址: https://ju.6miu.com/read-7721.html

    最新回复(0)