美文网首页
Java日记2018-07-26

Java日记2018-07-26

作者: hayes0420 | 来源:发表于2018-07-26 06:33 被阅读0次

3Sum Closest

先数组排序,三个数之和减去目标值的绝对值较小,则更新之并记录此三个数之和,否则检查三个数和与目标值大小,比目标值大则减小右边的数,小则增加左边,等于的就是最接近的,直接返回

public static int close3sum(int[] arr,int tar){
        if(arr.length<3) return 0;
        int min = Integer.MAX_VALUE;
        int left=0;;
        int right=arr.length-1;
        int com;
        int res=0;
        Arrays.sort(arr);
        for(int i=0;i<arr.length-2;i++){
            left=i+1;
            while(left<right){
                int sum = arr[i] + arr[left] + arr[right];
                com = Math.abs(sum-tar);
                if(com<min){
                    res =sum;
                    min = com;
                } 

                if(sum>tar){
                    right--;
                } else if(sum<tar){
                    left++;
                } else{
                    return tar;
                }
            }
        }
        System.out.println(res);
        return res;
    }

相关文章

网友评论

      本文标题:Java日记2018-07-26

      本文链接:https://www.haomeiwen.com/subject/ysrvmftx.html