LeetCode16的最接近的三数之和

目录

  • 优化解法
  • 暴力搜索

LeetCode16的最接近的三数之和_第1张图片

优化解法

LeetCode16的最接近的三数之和_第2张图片

看了题解之后的根据题解的意思编写的优化解法,感觉还行,代码算是比较简短了,没有复杂的逻辑,就是写的时候总是只记得记录那个sum,忘记要记录最小的差值,更新min_minus.

class Solution {
    public int threeSumClosest(int[] nums, int target) {
        Arrays.sort(nums);
        int i=0,k=0,j=0,sum=0,n=nums.length,ans=0,min_minus=999999999;
        for(;i<n-2;++i){
            j=i+1;
            k=n-1;
            for(;j<k;){
                sum=nums[i]+nums[j]+nums[k];
                int minus=Math.abs(sum-target);
                if(minus<min_minus){
                    min_minus=minus;
                    ans=sum;
                }
                if(sum<target){
                    ++j;
                }else if(sum>target){
                    --k;
                }
                else{
                    return ans;
                }
            }
        }
        return ans;
    }
}

暴力搜索

class Solution {
    public int threeSumClosest(int[] nums, int target) {
        // Arrays.sort(nums);
        int i=0,k=0,j=0,sum=0,n=nums.length,min_minus_num=999999999,ans=0;
        for(;i<n-2;++i){
            j=i+1;

            for(;j<n-1;++j){
                k=j+1;                
                for(;k<n;++k){
                    sum=nums[i]+nums[j]+nums[k];
                    int minus_num=Math.abs(target-sum);
                    if(minus_num<min_minus_num){
                        min_minus_num=minus_num;
                        ans=sum;

                    }
                }
            }
        }
        return ans;
    }
}

你可能感兴趣的:(LeetCode题库,算法,java,数据结构)