首页 > 代码库 > leetcode--3Sum Closest

leetcode--3Sum Closest

Given an array S of n integers, find three integers in S such that the sum is closest to a given number, target. Return the sum of the three integers. You may assume that each input would have exactly one solution.

    For example, given array S = {-1 2 1 -4}, and target = 1.    The sum that is closest to the target is 2. (-1 + 2 + 1 = 2).
public class Solution {    public int threeSumClosest(int[] num, int target) {        int sum = 0, length = num.length;		if(length > 0) {			if(length <= 3) {				for(int i = 0; i < length; ++i)					sum += num[i];			}			else {				Arrays.sort(num);				int difference = Integer.MAX_VALUE;				for(int i = 0; i < length; ++i) {					int start = i + 1, end = length - 1;										while(start < end){						int temp = num[i] + num[start] + num[end];						if(temp == target) 							return target;						else {							if(difference > Math.abs((target - temp))){								sum = temp;								difference = Math.abs((target - temp));							}							if(temp < target)								++start;							else								--end;						}											}				}			}		}		return sum;        }}