算法套路總結(jié)-數(shù)組

1. 數(shù)組 - 做好初始定義

做數(shù)組類算法問題的時候怜械,我們常常需要定義一個變量灾而,明確該變量的定義饭寺,并且在書寫整個邏輯的時候阻课,要不停的維護住這個變量的意義。也特別需要注意初始值和邊界的問題艰匙。

做數(shù)組類題目的通用步驟
  1. 先將 分區(qū)的定義 寫在代碼中
  2. 初始化變量的值時保證三個區(qū)間都是空區(qū)間
  3. 遍歷時不停的維護 分區(qū)的定義
1. 移動零 (力扣 283)

題目 : https://leetcode.cn/leetbook/read/all-about-array/x9rh8e/

解法 (快慢指針法)

使用快慢指針, 快指針用來掃描, 慢指針用來指向可覆蓋的位置限煞。

慢指針指向當前已經(jīng)處理好的序列的尾部, 快指針指向待處理序列的頭部≡蹦快指針不斷向右移動, 每次快指針指向非零數(shù), 則將快慢指針對應的數(shù)交換, 同時慢指針右移署驻。

注意到以下性質(zhì):

  1. 慢指針左邊均為非零數(shù);
  2. 快指針左邊直到左指針處均為零。
  3. 快指針右邊都是待處理數(shù)健霹。
左邊界 --------------- 慢指針 ----------------- 快指針 ---------------- 右邊界
       保留的元素(非0)         不保留的元素 (0)           待處理的元素

因此每次交換, 都是將慢指針的零與快指針的非零數(shù)交換, 且非零數(shù)的相對順序并未改變旺上。

2. 移除元素 (力扣 27)

題目 : https://leetcode.cn/leetbook/read/all-about-array/x9p1iv/

解法一 (快慢指針法)

解法同 移動零, 只要把前等于 val 的值用后面不等于 val 的值覆蓋就可以, 而不需要交換這兩個值。有如下性質(zhì) :

  1. 只需要保證 左指針左邊均為非 val 值即可
  2. 不用保證右指針左邊到左指針都為 val 值
解法二 (左右指針法)
  1. 左指針找等于 val 的元素, 右指針找不等于 val 的元素
  2. 如果左指針的當前元素等于 val :
    1. 那么讓右指針的元素覆蓋左指針的元素
    2. 如果右指針的元素覆蓋完了左指針的元素還是 val, 那么右指針繼續(xù)往左移動
  3. 如果左指針的當前元素不等于 val, 那么左指針繼續(xù)往右移動
3. 刪除排序數(shù)組中的重復項 (力扣 26)

題目 : https://leetcode.cn/leetbook/read/all-about-array/x9a60t/

解法

如果快指針的值 和 快指針前面相鄰的值不一樣, 那么就用慢指針保存快指針的值

4. 刪除排序數(shù)組中的重復項2 (力扣 80)

題目 : https://leetcode.cn/leetbook/read/all-about-array/x9nivs/

解法
  1. nums[fast] 表示待檢查的第一個元素
  2. nums[slow ? 1] 為所有應該被保留的元素的最后一個
  3. nums[slow ? 2] 為所有被保留的元素的倒數(shù)第二個

因為本題要求相同元素最多出現(xiàn)兩次而非一次, 所以需要檢查上上個應該被保留的元素 nums[slow ? 2] 是否和當前待檢查元素 nums[fast] 相同, 如果不同, 那么執(zhí)行 nums[slow] = nums[fast]; 保留元素糖埋。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末宣吱,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子阶捆,更是在濱河造成了極大的恐慌凌节,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件洒试,死亡現(xiàn)場離奇詭異倍奢,居然都是意外死亡,警方通過查閱死者的電腦和手機垒棋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進店門卒煞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人叼架,你說我怎么就攤上這事畔裕∫虑耍” “怎么了?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵扮饶,是天一觀的道長具练。 經(jīng)常有香客問我,道長甜无,這世上最難降的妖魔是什么扛点? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮岂丘,結(jié)果婚禮上陵究,老公的妹妹穿的比我還像新娘。我一直安慰自己奥帘,他們只是感情好铜邮,可當我...
    茶點故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著寨蹋,像睡著了一般松蒜。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上已旧,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天牍鞠,我揣著相機與錄音,去河邊找鬼评姨。 笑死难述,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的吐句。 我是一名探鬼主播胁后,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼嗦枢!你這毒婦竟也來了攀芯?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤文虏,失蹤者是張志新(化名)和其女友劉穎侣诺,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體氧秘,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡年鸳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了丸相。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片搔确。...
    茶點故事閱讀 39,703評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出膳算,到底是詐尸還是另有隱情座硕,我是刑警寧澤,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布涕蜂,位于F島的核電站华匾,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏机隙。R本人自食惡果不足惜瘦真,卻給世界環(huán)境...
    茶點故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望黍瞧。 院中可真熱鬧,春花似錦原杂、人聲如沸印颤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至刷晋,卻和暖如春咸产,著一層夾襖步出監(jiān)牢的瞬間矢否,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工脑溢, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留僵朗,地道東北人。 一個月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓屑彻,卻偏偏與公主長得像验庙,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子社牲,可洞房花燭夜當晚...
    茶點故事閱讀 44,601評論 2 353

推薦閱讀更多精彩內(nèi)容