付費限定

把零搬到後面 Move Zeroes_Leetcode 精選75題

更新於 2024/03/07閱讀時間約 3 分鐘

題目敘述

題目會給定我們一個整數陣列nums,要求我們把裡面的0做元素交換,把0都搬到陣列的右邊。題目要求必須in-place在原本的陣列裡面做操作,不可以額外建立新的陣列。

題目的原文敘述


測試範例

Example 1:

Input: nums = [0,1,0,3,12]
Output: [1,3,12,0,0]

Example 2:

Input: nums = [0]
Output: [0]

約束條件

Constraints:

  • 1 <= nums.length <= 10^4

輸入陣列nums長度介於 1~10^4 之間。

  • -2^31 <= nums[i] <= 2^31 - 1

每個元素大小介於 -2^31 ~ 2^31 - 1 之間。


演算法

其實這題用逆向思考來解可以很漂亮地解出來,程式碼也簡單好懂。

原本題目的要求是把0都搬到右邊,其實,從另一個角度切入,相當於

把全部非零的數字都搬到左邊


有了這個想法以後,只要造一個loop從左到右去檢查每一個數字,每遇到一個非零的數字就把它放到左邊idx_of_nonzero所指向的位置即可。每搬一個數字過來,idx_of_nonzero就加1,去動態更新索引位置。


程式碼

class Solution:
def moveZeroes(self, nums: List[int]) -> None:

# swapping index for nonzero numbers
idx_of_nonzero = 0

# scan each element
for i in range(len(nums)):

if nums[i] != 0:

# swap non-zero number to the left-hand side
nums[ idx_of_nonzero ], nums[i] = nums[i], nums[ idx_of_nonzero ]
idx_of_nonzero += 1

return

關鍵知識點:

有時候題目原本的題意比較不好解的時候,可以試著逆向思考或著從不同的角度去切入,可能有意想不到的收穫喔!

以行動支持創作者!付費即可解鎖
本篇內容共 1213 字、1 則留言,僅發佈於Leetcode精選75題 解析+統整你目前無法檢視以下內容,可能因為尚未登入,或沒有該房間的查看權限。
avatar-img
90會員
425內容數
由有業界實戰經驗的演算法工程師, 手把手教你建立解題的框架, 一步步寫出高效、清晰易懂的解題答案。 著重在讓讀者啟發思考、理解演算法,熟悉常見的演算法模板。 深入淺出地介紹題目背後所使用的演算法意義,融會貫通演算法與資料結構的應用。 在幾個經典的題目融入一道題目的多種解法,或者同一招解不同的題目,擴展廣度,並加深印象。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
題目敘述 題目會給我們一個輸入陣列nums,要求我們判斷輸入陣列nums內部是否存在長度為三的遞增子序列? 題目的原文敘述 測試範例 Example 1: Input: nums = [1,2,3,4,5] Output: true Explanation: Any triplet wh
題目敘述 題目會給我們一個字串s作為輸入,要求我們以white space空白為切割符號,切割出每個單字,並且反轉其順序後,以字串形式最為最後的輸出。 題目的原文敘述 測試範例 Example 1: Input: s = "the sky is blue" Output: "blue i
題目敘述 題目會給定我們一格花盆陣列flowerbed,和欲種植的花朵數目n。 花盆陣列中,0代表空位,1代表已經有種好的花盆存在。 種花的要求是,不能有兩兩相鄰的花盆出現,中間一定要間隔至少一個空位。 問我們在給定的條件下,能不能順利種完n個花朵盆栽? 若可以返回True,若無解返回Fa
題目敘述 題目會給定我們一個字串s,要求我們反轉字串s中所有母音字元的順序,並且以字串的形式輸出。 註: 母音字元為a, e, i, o, u 或者 A, E, I, O, U 題目的原文敘述 測試範例 Example 1: Input: s = "hello" Output: "ho
題目敘述 題目會給定一個陣列candies和一個整數extraCandies作為輸入。 陣列candies代表每一位小朋友手上擁有的糖果總數。 問我們,從頭到尾每一位小朋友,如果多給extraCandies顆糖果給其中某一位小朋友,那位小朋友拿到的糖果數量是不是最多的?假如是,則標記為True
題目敘述 題目會給定兩個輸入字串str1和str2,要求我們找出這兩個字串的最大共同子字串。 如果無解,則返回空字串""。 題目的原文敘述 測試範例 Example 1: Input: str1 = "ABCABC", str2 = "ABC" Output: "ABC" Exam
題目敘述 題目會給我們一個輸入陣列nums,要求我們判斷輸入陣列nums內部是否存在長度為三的遞增子序列? 題目的原文敘述 測試範例 Example 1: Input: nums = [1,2,3,4,5] Output: true Explanation: Any triplet wh
題目敘述 題目會給我們一個字串s作為輸入,要求我們以white space空白為切割符號,切割出每個單字,並且反轉其順序後,以字串形式最為最後的輸出。 題目的原文敘述 測試範例 Example 1: Input: s = "the sky is blue" Output: "blue i
題目敘述 題目會給定我們一格花盆陣列flowerbed,和欲種植的花朵數目n。 花盆陣列中,0代表空位,1代表已經有種好的花盆存在。 種花的要求是,不能有兩兩相鄰的花盆出現,中間一定要間隔至少一個空位。 問我們在給定的條件下,能不能順利種完n個花朵盆栽? 若可以返回True,若無解返回Fa
題目敘述 題目會給定我們一個字串s,要求我們反轉字串s中所有母音字元的順序,並且以字串的形式輸出。 註: 母音字元為a, e, i, o, u 或者 A, E, I, O, U 題目的原文敘述 測試範例 Example 1: Input: s = "hello" Output: "ho
題目敘述 題目會給定一個陣列candies和一個整數extraCandies作為輸入。 陣列candies代表每一位小朋友手上擁有的糖果總數。 問我們,從頭到尾每一位小朋友,如果多給extraCandies顆糖果給其中某一位小朋友,那位小朋友拿到的糖果數量是不是最多的?假如是,則標記為True
題目敘述 題目會給定兩個輸入字串str1和str2,要求我們找出這兩個字串的最大共同子字串。 如果無解,則返回空字串""。 題目的原文敘述 測試範例 Example 1: Input: str1 = "ABCABC", str2 = "ABC" Output: "ABC" Exam
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
如何把靈體搞爛卻自己又不知道呢? . 請問老師一個正常上學或工作的人, 如何把自己靈體搞爛? . 這是網友問的, 其實要說簡單也非常簡單, 光 [ 想法 ] 就可以把一個人靈體搞到很爛, 然後那個人完全不知道也完全不信, 都要等到好幾年後,出事了死到臨頭了, 才要相信我說的,這種的我看多了, 看鬼這
今天讓我更深體會到原來無限大這個符號更像是鳥兒自由的飛 我像是在天空飛舞的鳥兒一樣 畫著無限大的符號 還有另一個符號兩個圓 原來圓代表了整體性 原始完美 無限 永恒 也代表上帝 上帝是一個圓 它的中心無處不在 是的 祂想告訴我的是我祂無處不在 祂用祂的愛來醫治我
Thumbnail
當初一看到這本書的簡介就非常有興趣,我真的很喜歡閱讀有關靈魂的書籍,讀完作者的前言,我知道我們的觀點一定會非常合拍。
Thumbnail
以下為有緣人分享,文章照登: 因為十年前年輕不懂事,更不識因果,做了一件一輩子悔恨的事,拿了一個無緣子女。當時怕家人父母罵、怕無力撫養、怕很多……等,所以做了這個決定。愧疚了一輩子,也是一輩子的痛!一直到在精舍請示後才真正打開這個結。 因為愧疚,十年來參加無數大大小小場的超度法會。從靈鷲山、法鼓山、
Thumbnail
「元辰宮」就是靈魂的家,投射的是現況,所以是可以在不同時期或是有需要時都能夠做觀元辰宮和調整的。元辰宮中有大廳和神明廳、廚房、書房、臥房和花園,分別有不同的代表意義。大廳和神明廳是整體運勢,廚房和金錢有關,書房則是事業工作,臥房和家庭相關,花園可以看到健康狀況等等。我就我的印象來紀錄,如果各位有興趣
Thumbnail
前陣子很幸運地專訪到聲音表達溝通老師林依柔,出乎我意料的是,從聲音到溝通,竟可以一路聊到認識自我。自小學習古典音樂的她,在彈鋼琴時,領悟到了一點,一台鋼琴,可以演奏貝多芬也可以演繹李斯特,因為鋼琴是淨空的。因此,它可以被不同的情緒共振,再將這份情感傳遞出去。
Thumbnail
在學習當個演員的路途上 最令人有感覺的就是這一句話 "要學會把自己歸零" 不論是在練習還是表演 或是在每一天的生活....
Thumbnail
先從一個故事開始,之前我有開過幾次的分享會,主題叫做聆聽身體的聲音,是由我昨天分享的精油,當作起點去找到感覺身體。 那時候的我,對身心學只是聽過,還沒有真的入手去學,所以多數時候是透過靜下來對身體的觀察,去找到身體想要表達的訊息,近一步的透過對精油的認識,
Thumbnail
為你靈魂把脈的傳道者—幸福顧問安妮 人脈平台  有些人天生就有與別人不同的使命,例如這次我訪問的基督徒的「傳道者」安妮,她本身除了是一位心理學的諮商師,並且曾經在大學畢業之後,因為機緣巧合下自己獨立義務照顧一位足足大她十歲無家可歸的思覺失調患者三年,並且在神的感召下,還擔任過神職牧師任務五年,
Thumbnail
時間是不可逆的,這個道理大家都知道,但有人去思考過時間的寶貴性嗎??別讓時間怪獸吃掉了你寶貴的時間,來看有理如何有效使用零碎時間,把有限的時間再延長!
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
如何把靈體搞爛卻自己又不知道呢? . 請問老師一個正常上學或工作的人, 如何把自己靈體搞爛? . 這是網友問的, 其實要說簡單也非常簡單, 光 [ 想法 ] 就可以把一個人靈體搞到很爛, 然後那個人完全不知道也完全不信, 都要等到好幾年後,出事了死到臨頭了, 才要相信我說的,這種的我看多了, 看鬼這
今天讓我更深體會到原來無限大這個符號更像是鳥兒自由的飛 我像是在天空飛舞的鳥兒一樣 畫著無限大的符號 還有另一個符號兩個圓 原來圓代表了整體性 原始完美 無限 永恒 也代表上帝 上帝是一個圓 它的中心無處不在 是的 祂想告訴我的是我祂無處不在 祂用祂的愛來醫治我
Thumbnail
當初一看到這本書的簡介就非常有興趣,我真的很喜歡閱讀有關靈魂的書籍,讀完作者的前言,我知道我們的觀點一定會非常合拍。
Thumbnail
以下為有緣人分享,文章照登: 因為十年前年輕不懂事,更不識因果,做了一件一輩子悔恨的事,拿了一個無緣子女。當時怕家人父母罵、怕無力撫養、怕很多……等,所以做了這個決定。愧疚了一輩子,也是一輩子的痛!一直到在精舍請示後才真正打開這個結。 因為愧疚,十年來參加無數大大小小場的超度法會。從靈鷲山、法鼓山、
Thumbnail
「元辰宮」就是靈魂的家,投射的是現況,所以是可以在不同時期或是有需要時都能夠做觀元辰宮和調整的。元辰宮中有大廳和神明廳、廚房、書房、臥房和花園,分別有不同的代表意義。大廳和神明廳是整體運勢,廚房和金錢有關,書房則是事業工作,臥房和家庭相關,花園可以看到健康狀況等等。我就我的印象來紀錄,如果各位有興趣
Thumbnail
前陣子很幸運地專訪到聲音表達溝通老師林依柔,出乎我意料的是,從聲音到溝通,竟可以一路聊到認識自我。自小學習古典音樂的她,在彈鋼琴時,領悟到了一點,一台鋼琴,可以演奏貝多芬也可以演繹李斯特,因為鋼琴是淨空的。因此,它可以被不同的情緒共振,再將這份情感傳遞出去。
Thumbnail
在學習當個演員的路途上 最令人有感覺的就是這一句話 "要學會把自己歸零" 不論是在練習還是表演 或是在每一天的生活....
Thumbnail
先從一個故事開始,之前我有開過幾次的分享會,主題叫做聆聽身體的聲音,是由我昨天分享的精油,當作起點去找到感覺身體。 那時候的我,對身心學只是聽過,還沒有真的入手去學,所以多數時候是透過靜下來對身體的觀察,去找到身體想要表達的訊息,近一步的透過對精油的認識,
Thumbnail
為你靈魂把脈的傳道者—幸福顧問安妮 人脈平台  有些人天生就有與別人不同的使命,例如這次我訪問的基督徒的「傳道者」安妮,她本身除了是一位心理學的諮商師,並且曾經在大學畢業之後,因為機緣巧合下自己獨立義務照顧一位足足大她十歲無家可歸的思覺失調患者三年,並且在神的感召下,還擔任過神職牧師任務五年,
Thumbnail
時間是不可逆的,這個道理大家都知道,但有人去思考過時間的寶貴性嗎??別讓時間怪獸吃掉了你寶貴的時間,來看有理如何有效使用零碎時間,把有限的時間再延長!