3Sum Closest -- LeetCode

原题链接: http://oj.leetcode.com/problems/3sum-closest/

这道题跟3Sum很类似,区别就是要维护一个最小的diff,求出和目标最近的三个和。brute force时间复杂度为O(n^3),优化的解法是使用排序之后夹逼的方法,总的时间复杂度为O(n^2+nlogn)=(n^2),空间复杂度是O(n),代码如下:

public int threeSumClosest(int[] num, int target) {
    if(num == null || num.length<=2)
        return Integer.MIN_VALUE;
    Arrays.sort(num);
    int closest = num[0]+num[1]+num[2]-target;    
    for(int i=0;itarget)
        {
            r--;
        }
        else
        {
            l++;
        }
    }
    return closest;
}
这道题具体的考察点可以参见 3Sum ,稍微变体一下,其实区别不大。此题更加复杂的扩展是4Sum,请参见4Sum -- LeetCode.

你可能感兴趣的:(3Sum Closest -- LeetCode)