美文网首页
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