3Sum Closest

来源:互联网 发布:淘宝ipad官换机可靠吗 编辑:程序博客网 时间:2024/06/05 06:21
import java.util.Arrays;public class Solution {    public int min ;    public int[] a;    public int threeSumClosest(int[] num,int target) {        // Start typing your Java solution below        // DO NOT write main() function       if(num==null||num.length<3)return 0;       int len = num.length;       a = new int[3];       Arrays.sort(num);       min=100000;       //ArrayList<ArrayList<Integer>> ret = new ArrayList<ArrayList<Integer>>();       for(int i = 0; i < len-2;i++){           //if(num[i]>0) break;           int mid = i+1;           int right = len-1;           while(mid<right){               int now = num[mid]+num[right]+num[i];               if(now>target){                   check(i,mid,right,num,target);                   right--;               }               else if(now==target){                   a[0] = num[i];a[1] =num[mid];a[2]=num[right];                   return target;               }               else{                    check(i,mid,right,num,target);                    mid++;               }           }       }       return a[0]+a[1]+a[2];    }    private void check(int i,int j,int k,int[] num,int target){    if(Math.abs(num[i]+num[j]+num[k]-target)<min){            min = Math.abs(num[i]+num[j]+num[k]-target);            a[0] = num[i];a[1] =num[j];a[2]=num[k];        }    }    public static void main(String[] args){    Solution s =new Solution();    int[] b = new int[3];    b[0]=0;b[1]=0;b[2]=0;    int t = s.threeSumClosest(b, 1);    System.out.println(t);    }}

原创粉丝点击