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); }}