成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

[Leetcode] 3Sum Smaller 三數(shù)較小和

tomato / 431人閱讀

摘要:排序法復(fù)雜度時(shí)間空間思路解題思路和一樣,也是先對(duì)整個(gè)數(shù)組排序,然后一個(gè)外層循環(huán)確定第一個(gè)數(shù),然后里面使用頭尾指針和進(jìn)行夾逼,得到三個(gè)數(shù)的和。

3Sum Smaller

Given an array of n integers nums and a target, find the number of index triplets i, j, k with 0 <= i < j < k < n that satisfy the condition nums[i] + nums[j] + nums[k] < target.

For example, given nums = [-2, 0, 1, 3], and target = 2.

Return 2. Because there are two triplets which sums are less than 2:

[-2, 0, 1]
[-2, 0, 3]

Follow up: Could you solve it in O(n2) runtime?

排序法 復(fù)雜度

時(shí)間 O(N^2) 空間 O(1)

思路

解題思路和3SUM一樣,也是先對(duì)整個(gè)數(shù)組排序,然后一個(gè)外層循環(huán)確定第一個(gè)數(shù),然后里面使用頭尾指針left和right進(jìn)行夾逼,得到三個(gè)數(shù)的和。如果這個(gè)和大于或者等于目標(biāo)數(shù),說(shuō)明我們選的三個(gè)數(shù)有點(diǎn)大了,就把尾指針right向前一位(因?yàn)槭桥判虻臄?shù)組,所以向前肯定會(huì)變?。H绻@個(gè)和小于目標(biāo)數(shù),那就有right - left個(gè)有效的結(jié)果。為什么呢?因?yàn)榧僭O(shè)我們此時(shí)固定好外層的那個(gè)數(shù),還有頭指針left指向的數(shù)不變,那把尾指針向左移0位一直到左移到left之前一位,這些組合都是小于目標(biāo)數(shù)的。

代碼
public class Solution {
    public int threeSumSmaller(int[] nums, int target) {
        // 先將數(shù)組排序 
        Arrays.sort(nums);
        int cnt = 0;
        for(int i = 0; i < nums.length - 2; i++){
            int left = i + 1, right = nums.length - 1;
            while(left < right){
                int sum = nums[i] + nums[left] + nums[right];
                // 如果三個(gè)數(shù)的和大于等于目標(biāo)數(shù),那將尾指針向左移
                if(sum >= target){
                    right--;
                // 如果三個(gè)數(shù)的和小于目標(biāo)數(shù),那將頭指針向右移
                } else {
                    // right - left個(gè)組合都是小于目標(biāo)數(shù)的
                    cnt += right - left;
                    left++;
                }
            }
        }
        return cnt;
    }
}

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/64579.html

相關(guān)文章

  • LeetCode 之 JavaScript 解答第十五題 —— 三數(shù)之和(3Sum

    摘要:如果三個(gè)數(shù)據(jù)相加等于了,就存儲(chǔ)該三個(gè)值且更新和指針。邊界條件判斷數(shù)組內(nèi)元素是否都為整數(shù)或負(fù)數(shù),直接返回。判斷和指針的大小關(guān)系。在原來(lái)數(shù)組上進(jìn)行排序,不生成副本。 Time:2019/4/3Title:3SumDifficulty: mediumAuthor:小鹿 題目三:ADD Two Numbers Given an array?nums?of?n?integers, are the...

    Wildcard 評(píng)論0 收藏0
  • [LintCode/LeetCode] 3Sum

    摘要:雙指針?lè)ǖ慕夥?。然后用和夾逼找到使三數(shù)和為零的三數(shù)數(shù)列,放入結(jié)果數(shù)組。對(duì)于這三個(gè)數(shù),如果循環(huán)的下一個(gè)數(shù)值和當(dāng)前數(shù)值相等,就跳過(guò)以避免中有相同的解。 Problem Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all unique triplet...

    Sunxb 評(píng)論0 收藏0
  • 3Sum Smaller

    摘要:題目鏈接,從小到大排序固定第一個(gè)數(shù)字,從后面的數(shù)字里選第二個(gè)第三個(gè)后兩個(gè)數(shù)字,用來(lái)找,從開始因?yàn)樗兄g的數(shù)和組合都 3Sum Smaller 題目鏈接:https://leetcode.com/problems... sort,從小到大排序 固定第一個(gè)數(shù)字index = i,從后面的數(shù)字里選第二個(gè)第三個(gè) 后兩個(gè)數(shù)字,用2 points來(lái)找,從j = i + 1, k = len(...

    Salamander 評(píng)論0 收藏0
  • 思維導(dǎo)圖整理大廠面試高頻數(shù)組補(bǔ)充1: 最接近的三數(shù)之和 和 三數(shù)之和 的兩個(gè)不同之處, 力扣16

    摘要:此專欄文章是對(duì)力扣上算法題目各種方法的總結(jié)和歸納整理出最重要的思路和知識(shí)重點(diǎn)并以思維導(dǎo)圖形式呈現(xiàn)當(dāng)然也會(huì)加上我對(duì)導(dǎo)圖的詳解目的是為了更方便快捷的記憶和回憶算法重點(diǎn)不用每次都重復(fù)看題解畢竟算法不是做了一遍就能完全記住的所 ...

    longmon 評(píng)論0 收藏0
  • [LintCode] 3Sum Smaller

    Problem Given an array of n integers nums and a target, find the number of index triplets i, j, k with 0 = target) return 0; int count = 0; for (int i = 0; i < nums.length-2; i++) { ...

    AprilJ 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<