leetcode 16: 3Sum Closest

来源:互联网 发布:淘宝运营教程百度云 编辑:程序博客网 时间:2024/06/05 04:40

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

解题思路

这一题和leetcode15 : 3sum 基本思路是一样的,将3sum问题转化为2sum问题,只是判断条件出现了一些差别,时间复杂度也是O(n^2).

JAVA代码

 public int threeSumClosest(int[] nums, int target) {    Arrays.sort(nums);    int res = nums[0] + nums[1] + nums[nums.length-1];    for(int i=0; i < nums.length-2; i++) {        int low = i+1;        int high = nums.length-1;        while(low < high) {            if(Math.abs(target - nums[i] - nums[low] - nums[high]) <  Math.abs(target - res)) {                res = nums[i] + nums[low] + nums[high];            }            if(target > nums[i] + nums[low] + nums[high] ) {                low++;            }            else {                high--;            }        }    }    return res;}
原创粉丝点击