LeetCode----- 16.3Sum Closest

来源:互联网 发布:反映网络暴力的美剧 编辑:程序博客网 时间:2024/06/10 03:29

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

解题思路:解法跟3sum类似,但是每次需要将3个元素之和需要进行对比,需要取最小值。时间复杂度O(N^2)

public static int threeSumClosest(int[] nums, int target) {    if(nums.length < 3) {    return 0;    }    Arrays.sort(nums);    int result = 0;    int min = Integer.MAX_VALUE;    for (int i = 0; i < nums.length-2; i++) {    int start = i+1;    int end = nums.length -1;    while(start<end) {    int sum = nums[i] +nums[start] +nums[end];    if(sum < target) {    start++;    }else{    end--;    }    //取最小值    if(Math.abs(sum-target) < min) {    result = sum;    min = Math.abs(sum-target);    }    }}        return result;    }