LeetCode_16---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).

翻译:

    Code:


    import java.util.Arrays;
    
    /**
     * @author MohnSnow
     * @time 2015年6月4日 上午11:48:32
     * 
     */
    public class LeetCode16 {
    
    	/**
    	 * @param argsmengdx
    	 *            -fnst
    	 */
    	public static int threeSumClosest(int[] num, int target) {
    		int result = num[0] + num[1] + num[num.length - 1];//初始化
    		Arrays.sort(num);
    		for (int i = 0; i < num.length - 2; i++) {
    			int start = i + 1, end = num.length - 1;
    			while (start < end) {
    				int sum = num[i] + num[start] + num[end];
    				if (sum > target) {
    					end--;
    				} else {
    					start++;
    				}
    				if (Math.abs(sum - target) < Math.abs(result - target)) {
    					result = sum;
    				}
    			}
    		}
    		return result;
    	}
    
    	public static void main(String[] args) {
    		int[] strs = { 0, 2, 1, -3 };
    		int a = 1;
    		System.out.println(threeSumClosest(strs, a));
    	}
    
    }
    


    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值