LeetCode_OJ【16】3Sum Closest

来源:互联网 发布:网络推广平台找推网 编辑:程序博客网 时间:2024/06/05 21:59

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

题目和LeetCode_OJ【15】3Sum类似,思路就不再赘述了,下面是具体实现:

public class Solution {    public int threeSumClosest(int[] nums, int target) {        Arrays.sort(nums);        int min = nums[0] + nums[1] + nums[2] - target;        for(int i = 0; i < nums.length -2 ;i++){            for(int left = i +1,right= nums.length-1 ; left < right; ){                if(Math.abs(nums[i] + nums[left] + nums[right] - target) < Math.abs(min)){                    min = nums[i] + nums[left] + nums[right] - target;                }                if(nums[i] + nums[left] + nums[right] > target){                    right --;                }                else{                    left ++;                }            }        }        return min + target ;    }}

代码中min表示三个数字的和与target的最小差值。

0 0
原创粉丝点击