259. 3Sum Smaller

https://leetcode.com/problems/3sum-smaller/description/

259. 3Sum Smaller_第1张图片
image.png

这道题,暴力解法n^3,遍历所有可能,如果小于TAR,就CNT++;
followup : n^2

这样肯定不能一个个加了。得一次批量加起来。
为了达到这个效果,我们必须先固定一个指针,剩下的2个一个放在最左段,一个放在尽可能靠右。这时3个加起来,如果 这样就用了O1的时间,代替了ON 的操作。
如果>target,意味,最小的这个数已经和2个最大的组合,还不满足条件,那么最小的这个数一定不存在解。这样我们就可以放心的右移最左的指针。然后重复上述的比较。

public int threeSumSmaller(int[] ids, int tar) {
        Arrays.sort(ids);
        int l = ids.length;
        int cnt = 0;
        for(int i = l - 1; i >= 2; i--){
            int cur = ids[i];
            int j = 0, k = i-1;
            while(j

你可能感兴趣的:(259. 3Sum Smaller)