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

【算法專題突破】雙指針 - 移動零(1)

這篇具有很好參考價值的文章主要介紹了【算法專題突破】雙指針 - 移動零(1)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

寫在前面

1. 題目解析

2. 算法原理

3. 代碼編寫

寫在最后:


寫在前面

在進行了劍指Offer和LeetCode hot100的毒打之后,

我決心系統(tǒng)地學(xué)習(xí)一些經(jīng)典算法,增強我的綜合算法能力。

1. 題目解析

題目鏈接:283. 移動零 - 力扣(Leetcode)

【算法專題突破】雙指針 - 移動零(1),算法專題訓(xùn)練,c++,算法,雙指針

讀完題目大概就能明白他的意思,

就是在不改變其他數(shù)字的情況下,把0都移動到數(shù)組最后面去。

2. 算法原理

這道題算是一道數(shù)組類的題目,而題目把數(shù)組分成了兩個區(qū)間,

左邊是放非0的數(shù),而右邊放的是0,

而解決這一類的題目有一個非常經(jīng)典的算法:雙指針算法,

說到雙指針算法,難道我們真的要用兩個指針來做這道題目嗎?

當(dāng)然不是,雙指針只是他的名字,實際上雙指針算法指的是:

利用數(shù)組下標來充當(dāng)指針,

那我們?nèi)绾问褂秒p指針算法來做這道題目呢?

我習(xí)慣創(chuàng)建兩個變量作為雙指針:left 和 right,

1. right 的作用是遍歷整個數(shù)組

2. left 的作用是作為分界線,左邊區(qū)間是已經(jīng)排好的,右邊區(qū)間是還沒排好的

讓 right 一直往后走(right++),

如果 right 所在的位置不為 0 ,就交換 left 和 right 位置的值,讓 left ++,

因為 left 和 right 的起始位置相同,

這樣就能保證當(dāng)他們開始交換的時候,left 一定待在 0 位置上,而 right 在非 0 位置上。

來我們開始編寫代碼:

3. 代碼編寫

class Solution {
public:
    void moveZeroes(vector<int>& nums) {
        int size = nums.size(), left = 0, right = 0;
        while (right < size) {
            if(nums[right]) {
                swap(nums[left], nums[right]);
                left++;
            }
            right++;
        }
    }
};

寫在最后:

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

如果感到有所收獲的話可以給博主點一個哦。

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

到了這里,關(guān)于【算法專題突破】雙指針 - 移動零(1)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

    2024年02月09日
    瀏覽(17)
  • 【算法專題--雙指針算法】leetcode--283. 移動零、leetcode--1089. 復(fù)寫零

    【算法專題--雙指針算法】leetcode--283. 移動零、leetcode--1089. 復(fù)寫零

    ??你好,我是 RO-BERRY ?? 致力于C、C++、數(shù)據(jù)結(jié)構(gòu)、TCP/IP、數(shù)據(jù)庫等等一系列知識 ??感謝你的陪伴與支持 ,故事既有了開頭,就要畫上一個完美的句號,讓我們一起加油 雙指針 常見的雙指針有兩種形式,一種是對撞指針,?種是左右指針。 對撞指針:一般用于順序結(jié)構(gòu)中

    2024年03月17日
    瀏覽(29)
  • 【LeetCode 算法專題突破】滑動窗口(?)

    【LeetCode 算法專題突破】滑動窗口(?)

    學(xué)完了雙指針算法,滑動窗口那肯定是逃不掉了,我個人感覺他倆就不分家,不把滑動窗口的題目好好刷上一刷我都難受 先來一道經(jīng)典的滑動窗口試試水 題目鏈接:209. 長度最小的子數(shù)組 其實滑動窗口題目的解法都大同小異,我們基本上寫幾道題目,就能很好的掌握這個算

    2024年02月07日
    瀏覽(22)
  • 【算法專題突破】滑動窗口 - 長度最小的子數(shù)組(9)

    【算法專題突破】滑動窗口 - 長度最小的子數(shù)組(9)

    目錄 1. 題目解析 2. 算法原理 3. 代碼編寫 寫在最后: 題目鏈接:209. 長度最小的子數(shù)組 - 力扣(Leetcode) ?要注意的是,題目給的是正整數(shù), 而題目要求并不難理解,就是找最短的子數(shù)組。 如果使用暴力的話,就是一個O(N3)的算法,復(fù)雜度很高, 我們可以用滑動窗口來做,

    2024年02月09日
    瀏覽(27)
  • 【算法專題突破】二分查找 - x 的平方根(18)

    【算法專題突破】二分查找 - x 的平方根(18)

    目錄 1. 題目解析 2. 算法原理 3. 代碼編寫 寫在最后: 題目鏈接:69. x 的平方根 - 力扣(LeetCode) 這道題就是求算數(shù)平方根, 要注意的點是他只需要保留整數(shù)部分,小數(shù)部分會舍去 我們確定好一個區(qū)間 1 ~ x,數(shù)字 x 的算數(shù)平方根一定在這里面, 最簡單的思路就是用暴力解法

    2024年02月07日
    瀏覽(19)
  • 【算法優(yōu)選】雙指針專題——壹

    【算法優(yōu)選】雙指針專題——壹

    常?的雙指針有兩種形式,?種是 對撞指針 ,?種是 左右指針 對撞指針 :?般?于順序結(jié)構(gòu)中,也稱左右指針。 對撞指針從兩端向中間移動。?個指針從最左端開始,另?個從最右端開始,然后逐漸往中間逼近。 對撞指針的終?條件?般是兩個指針相遇或者錯開(也可能

    2024年02月08日
    瀏覽(27)
  • 【算法優(yōu)選】雙指針專題——貳

    【算法優(yōu)選】雙指針專題——貳

    常?的雙指針有兩種形式,?種是 對撞指針 ,?種是 左右指針 對撞指針 :?般?于順序結(jié)構(gòu)中,也稱左右指針。 對撞指針從兩端向中間移動。?個指針從最左端開始,另?個從最右端開始,然后逐漸往中間逼近。 對撞指針的終?條件?般是兩個指針相遇或者錯開(也可能

    2024年02月08日
    瀏覽(25)
  • 【算法優(yōu)選】雙指針專題——叁

    常?的雙指針有兩種形式,?種是 對撞指針 ,?種是 左右指針 對撞指針 :?般?于順序結(jié)構(gòu)中,也稱左右指針。 對撞指針從兩端向中間移動。?個指針從最左端開始,另?個從最右端開始,然后逐漸往中間逼近。 對撞指針的終?條件?般是兩個指針相遇或者錯開(也可能

    2024年02月08日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包