国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【算法專(zhuān)題突破】雙指針 - 三數(shù)之和(7)

這篇具有很好參考價(jià)值的文章主要介紹了【算法專(zhuān)題突破】雙指針 - 三數(shù)之和(7)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

目錄

1. 題目解析

2. 算法原理

3. 代碼編寫(xiě)

寫(xiě)在最后:


1. 題目解析

題目鏈接:15. 三數(shù)之和 - 力扣(Leetcode)

【算法專(zhuān)題突破】雙指針 - 三數(shù)之和(7),算法專(zhuān)題訓(xùn)練,算法,c++,leetcode

?題目就是要找出和為0的不重復(fù)的三元組,

注意三元組的每個(gè)元素是得不同的位置,那不重復(fù)又是什么意思呢?

我們可以看第一個(gè)示例,

他找出了三個(gè)三元組,但是他最后只返回了兩個(gè),

也就是,三元組的元素相同算同一個(gè)三元組。(如果沒(méi)有就返回空集。)

2. 算法原理

第一個(gè)想法當(dāng)然是暴力枚舉,具體來(lái)說(shuō)就是,

先排序,然后暴力枚舉,最后用set去重就行,

那我們就得想一想怎么把N3的暴力枚舉優(yōu)化一下,

排序之后是有序數(shù)組,那我們就得想到改用二分還是雙指針來(lái)優(yōu)化:當(dāng)然是優(yōu)先雙指針啦

來(lái)看具體解法:

固定一個(gè) i 位置:

【算法專(zhuān)題突破】雙指針 - 三數(shù)之和(7),算法專(zhuān)題訓(xùn)練,算法,c++,leetcode

我們只需要通過(guò)雙指針快速找到 left 位置 + right 位置的和是 4 的位置即可。

3. 代碼編寫(xiě)

class Solution {
public:
    vector<vector<int>> threeSum(vector<int>& nums) {
        vector<vector<int>> ans;
        sort(nums.begin(), nums.end());
        for(int i = 0; i < nums.size() - 2; i++) {
            int left = i + 1, right = nums.size() - 1;
            while(left < right) {
                int sum = nums[i] + nums[left] + nums[right];
                if(sum < 0) left++;
                else if(sum > 0) right--;
                else { // sum == 0
                    ans.push_back({nums[i], nums[left], nums[right]});
                    while(left < right && nums[left] == nums[left + 1]) left++;
                    while(left < right && nums[right] == nums[right - 1]) right--;
                    left++, right--;
                }
            }
            while(i < nums.size() - 2 && nums[i] == nums[i + 1]) i++;
        }
        return ans;
    }
};

寫(xiě)在最后:

以上就是本篇文章的內(nèi)容了,感謝你的閱讀。

如果感到有所收獲的話可以給博主點(diǎn)一個(gè)哦。

如果文章內(nèi)容有遺漏或者錯(cuò)誤的地方歡迎私信博主或者在評(píng)論區(qū)指出~文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-702792.html

到了這里,關(guān)于【算法專(zhuān)題突破】雙指針 - 三數(shù)之和(7)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • [雙指針] (三) LeetCode LCR 179. 查找總價(jià)格為目標(biāo)值的兩個(gè)商品 和 15. 三數(shù)之和

    [雙指針] (三) LeetCode LCR 179. 查找總價(jià)格為目標(biāo)值的兩個(gè)商品 和 15. 三數(shù)之和

    [雙指針] (三) LeetCode LCR 179. 查找總價(jià)格為目標(biāo)值的兩個(gè)商品 和 15. 三數(shù)之和 查找總價(jià)格為目標(biāo)值的兩個(gè)商品 LCR 179. 查找總價(jià)格為目標(biāo)值的兩個(gè)商品 題目分析 (1) 數(shù)組內(nèi)數(shù)字是升序 (2) 目標(biāo)值為target (3) 找兩數(shù)之和為target 解題思路 找兩個(gè)數(shù)字的和與目標(biāo)值相等,我們可以想到

    2024年02月05日
    瀏覽(25)
  • 【LeetCode: 167. 兩數(shù)之和 II - 輸入有序數(shù)組 | 雙指針專(zhuān)題 】

    【LeetCode: 167. 兩數(shù)之和 II - 輸入有序數(shù)組 | 雙指針專(zhuān)題 】

    ?? 算法題 ?? ?? 算法刷題專(zhuān)欄 | 面試必備算法 | 面試高頻算法 ?? ?? 越難的東西,越要努力堅(jiān)持,因?yàn)樗哂泻芨叩膬r(jià)值,算法就是這樣? ?? 作者簡(jiǎn)介:碩風(fēng)和煒,CSDN-Java領(lǐng)域優(yōu)質(zhì)創(chuàng)作者??,保研|國(guó)家獎(jiǎng)學(xué)金|高中學(xué)習(xí)JAVA|大學(xué)完善JAVA開(kāi)發(fā)技術(shù)棧|面試刷題|面經(jīng)八股文

    2024年02月13日
    瀏覽(53)
  • 【算法專(zhuān)題突破】雙指針 - 復(fù)寫(xiě)零(2)

    【算法專(zhuān)題突破】雙指針 - 復(fù)寫(xiě)零(2)

    目錄 1. 題目解析 2. 算法原理 3. 代碼編寫(xiě) 寫(xiě)在最后: 題目鏈接:1089. 復(fù)寫(xiě)零 - 力扣(Leetcode) 我先來(lái)讀題, 題目的意思非常的簡(jiǎn)單,其實(shí)就是, 遇到 0 就復(fù)制一個(gè)寫(xiě)進(jìn)數(shù)組,然后右邊的元素就右移一位, 看一眼例子可以很容易理解題意。? 一般像這種需要移動(dòng)數(shù)組的元素

    2024年02月11日
    瀏覽(21)
  • 【算法專(zhuān)題突破】雙指針 - 快樂(lè)數(shù)(3)

    【算法專(zhuān)題突破】雙指針 - 快樂(lè)數(shù)(3)

    目錄 1. 題目解析 2. 算法原理 3. 代碼編寫(xiě) 寫(xiě)在最后: 題目鏈接:202. 快樂(lè)數(shù) - 力扣(Leetcode) 這道題的題目也很容易理解, 看一下題目給的示例就能很容易明白, 但是要注意一個(gè)點(diǎn),最后有可能無(wú)限循環(huán)無(wú)法到達(dá)1。 這個(gè)時(shí)候我們就要想一下怎么判斷他是無(wú)線循環(huán)呢? 實(shí)際

    2024年02月11日
    瀏覽(17)
  • 【算法專(zhuān)題突破】雙指針 - 移動(dòng)零(1)

    【算法專(zhuān)題突破】雙指針 - 移動(dòng)零(1)

    目錄 寫(xiě)在前面 1. 題目解析 2. 算法原理 3. 代碼編寫(xiě) 寫(xiě)在最后: 在進(jìn)行了劍指Offer和LeetCode hot100的毒打之后, 我決心系統(tǒng)地學(xué)習(xí)一些經(jīng)典算法,增強(qiáng)我的綜合算法能力。 題目鏈接:283. 移動(dòng)零 - 力扣(Leetcode) 讀完題目大概就能明白他的意思, 就是在不改變其他數(shù)字的情況下

    2024年02月11日
    瀏覽(23)
  • 【算法專(zhuān)題突破】雙指針 - 盛最多水的容器(4)

    【算法專(zhuān)題突破】雙指針 - 盛最多水的容器(4)

    目錄 1. 題目解析 2. 算法原理 3. 代碼編寫(xiě) 寫(xiě)在最后: 題目鏈接:11. 盛最多水的容器 - 力扣(Leetcode)? ?這道題目也不難理解, 兩邊的柱子的盛水量是根據(jù)短的那邊的柱子決定的, 而盛水量就是短的柱子的高度 * 寬度即可。 ?這道題可以用暴力枚舉,兩層for循環(huán),肯定是可

    2024年02月10日
    瀏覽(18)
  • 【算法專(zhuān)題突破】雙指針 - 有效三角形的個(gè)數(shù)(5)

    【算法專(zhuān)題突破】雙指針 - 有效三角形的個(gè)數(shù)(5)

    目錄 1. 題目解析 2. 算法原理 3. 代碼編寫(xiě) 寫(xiě)在最后: 題目鏈接:611. 有效三角形的個(gè)數(shù) - 力扣(Leetcode) ?我們可以根據(jù)示例1來(lái)理解這一道題目, 他說(shuō)數(shù)組里面的數(shù)可以組成三角形三條邊的個(gè)數(shù), 那我們先自己枚舉一下所有情況看看: ?【2, 2, 3】 ?【2, 2, 4】 ?【2,

    2024年02月10日
    瀏覽(21)
  • 【算法專(zhuān)題突破】雙指針 - 和為s的兩個(gè)數(shù)字(6)

    【算法專(zhuān)題突破】雙指針 - 和為s的兩個(gè)數(shù)字(6)

    目錄 ? 1. 題目解析 2. 算法原理 3. 代碼編寫(xiě) 寫(xiě)在最后: 題目鏈接:劍指 Offer 57. 和為s的兩個(gè)數(shù)字 - 力扣(Leetcode) ?這道題題目就一句話但是也是有信息可以提取的, 最重要的就是開(kāi)始的那句話,“遞增序列” 然后在數(shù)組中找出兩個(gè)和為s的數(shù)即可(而且是任意一對(duì)即可)

    2024年02月09日
    瀏覽(17)
  • [哈希專(zhuān)題]四數(shù)相加|贖金信|三數(shù)之和|四數(shù)之和

    此題思路:前兩個(gè)數(shù)求和sum,sum1=0-后兩數(shù)之和。判斷sum1是否在之前出現(xiàn)過(guò),此時(shí)用到哈希表,即判斷sum1是否在前兩個(gè)數(shù)中出現(xiàn)過(guò)。從而求得個(gè)數(shù)。 此題思路:定義兩個(gè)指針left和right,遍歷i,看三個(gè)位置的值是否為0。如果三個(gè)點(diǎn)值大于0,right--;如果小于0,left++。等于零即

    2024年01月17日
    瀏覽(18)
  • 力扣精選算法100題——四數(shù)之和(雙指針專(zhuān)題)

    力扣精選算法100題——四數(shù)之和(雙指針專(zhuān)題)

    上一篇講到(倆數(shù)之和and三數(shù)之和)這一篇我要來(lái)解析四數(shù)之和,四數(shù)之和建立在三數(shù)之和的基礎(chǔ)上,我們需要熟練掌握三數(shù)之和的算法原理,如果大家三數(shù)之和還沒(méi)弄清楚,請(qǐng)點(diǎn)擊三數(shù)之和and二數(shù)之和鏈接即可看到。 ?三數(shù)之和和四數(shù)之和的題意其實(shí)都一樣。 找到出四個(gè)數(shù)

    2024年01月19日
    瀏覽(21)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包