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

leetcode:移動零

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

移動零

easy

給定一個數組 nums,編寫一個函數將所有 0 移動到數組的末尾,同時保持非零元素的相對順序。

請注意 ,必須在不復制數組的情況下原地對數組進行操作。

示例 1:

輸入: nums = [0,1,0,3,12]
輸出: [1,3,12,0,0]

示例 2:

輸入: nums = [0]
輸出: [0]

提示:

  • 1 <= nums.length <= 104
  • -231 <= nums[i] <= 231 - 1

**進階:**你能盡量減少完成的操作次數嗎?

法1:操作次數多,效率非常低

class Solution:
    def moveZeroes(self, nums: List[int]) -> None:
        """
        Do not return anything, modify nums in-place instead.
        """
        for i, num in enumerate(nums):
            
            if num == 0:
                nums.remove(0)
                nums.append(0)
                
        return nums

法2:雙指針(效率高)

演示:

  1. 步驟一:
  1. 步驟二
class Solution:
    def moveZeroes(self, nums: List[int]) -> None:
        """
        Do not return anything, modify nums in-place instead.
        """
        i = j = 0#設置雙指針
        
        #步驟一
#i遍歷數組,j指向為0的下標,當nums[i]不為0時,將nums[i]的值替換到nums[j],然后j向后移動一位
        while i < len(nums):
            if nums[i] != 0:
                nums[j] = nums[i]
                j += 1
            i += 1
		#步驟二
#步驟一已經將所有非0數移到前面去了,現在j在最后一個非0數之后,將j到結尾的數全部賦值為0
        while j < len(nums):
            nums[j] = 0 
            j += 1
        
        return nums

我們創(chuàng)建兩個指針 i 和 j,第一次遍歷的時候指針 j 用來記錄當前有多少 非0 元素。即遍歷的時候每遇到一個 非0 元素就將其往數組左邊挪,第一次遍歷完后,j 指針的下標就指向了最后一個 非0 元素下標。
第二次遍歷的時候,起始位置就從 j 開始到結束,將剩下的這段區(qū)域內的元素全部置為 0。文章來源地址http://www.zghlxwxcb.cn/news/detail-528549.html

到了這里,關于leetcode:移動零的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

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

領支付寶紅包贊助服務器費用

相關文章

  • 算法訓練day9Leetcode232用棧實現隊列225用隊列實現棧

    https://programmercarl.com/%E6%A0%88%E4%B8%8E%E9%98%9F%E5%88%97%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html 見我的博客 https://blog.csdn.net/qq_36372352/article/details/135470438?spm=1001.2014.3001.5501 在push數據的時候,只要數據放進輸入棧就好,但在pop的時候,操作就復雜一些, 輸出棧如果為空,就把進棧數據全部導

    2024年01月24日
    瀏覽(50)
  • 算法訓練day36|貪心算法 part05(重疊區(qū)間三連擊:LeetCode435. 無重疊區(qū)間763.劃分字母區(qū)間56. 合并區(qū)間)

    算法訓練day36|貪心算法 part05(重疊區(qū)間三連擊:LeetCode435. 無重疊區(qū)間763.劃分字母區(qū)間56. 合并區(qū)間)

    題目鏈接???? 給定一個區(qū)間的集合,找到需要移除區(qū)間的最小數量,使剩余區(qū)間互不重疊。 注意: 可以認為區(qū)間的終點總是大于它的起點。 區(qū)間 [1,2] 和 [2,3] 的邊界相互“接觸”,但沒有相互重疊。 示例 1: 輸入: [ [1,2], [2,3], [3,4], [1,3] ] 輸出: 1 解釋: 移除 [1,3] 后,剩下的區(qū)

    2024年02月09日
    瀏覽(94)
  • 算法訓練day17leetcode110平衡二叉樹257二叉樹的所有路徑404左葉子之和

    https://www.bilibili.com/video/BV1GY4y1K7z8/?vd_source=8272bd48fee17396a4a1746c256ab0ae https://programmercarl.com/0404.%E5%B7%A6%E5%8F%B6%E5%AD%90%E4%B9%8B%E5%92%8C.html#%E6%80%9D%E8%B7%AF 采用后序遞歸遍歷,比較左右子樹的高度,相差小于等于1 前序,中左右,從根節(jié)點到葉子節(jié)點,會一直向下遍歷下去,不會返回信

    2024年01月19日
    瀏覽(31)
  • 算法訓練day41|動態(tài)規(guī)劃 part03(LeetCode343. 整數拆分、96.不同的二叉搜索樹)

    算法訓練day41|動態(tài)規(guī)劃 part03(LeetCode343. 整數拆分、96.不同的二叉搜索樹)

    題目鏈接???? 給定一個正整數 n,將其拆分為至少兩個正整數的和,并使這些整數的乘積最大化。 返回你可以獲得的最大乘積。 示例 1: 輸入: 2 輸出: 1 解釋: 2 = 1 + 1, 1 × 1 = 1。 示例 2: 輸入: 10 輸出: 36 解釋: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36。 說明: 你可以假設 n 不小于 2 且不大于

    2024年02月10日
    瀏覽(24)
  • 算法訓練day15Leetcode102二叉樹層序遍歷226翻轉二叉樹101對稱二叉樹

    https://www.bilibili.com/video/BV1ue4y1Y7Mf/?vd_source=8272bd48fee17396a4a1746c256ab0ae 層序遍歷一個二叉樹。就是從左到右一層一層的去遍歷二叉樹。這種遍歷的方式和我們之前講過的都不太一樣。 需要借用一個輔助數據結構即隊列來實現,隊列先進先出,符合一層一層遍歷的邏輯,而用棧先

    2024年01月18日
    瀏覽(34)
  • 算法訓練day16Leetcode104二叉樹最大深度111二叉樹最小深度222完全二叉樹的節(jié)點個數

    https://www.bilibili.com/video/BV1Gd4y1V75u/?vd_source=8272bd48fee17396a4a1746c256ab0ae 用遞歸,但是什么順序沒想清楚 二叉樹節(jié)點的深度:指從根節(jié)點到該節(jié)點的最長簡單路徑邊的條數或者節(jié)點數(取決于深度從0開始還是從1開始) 二叉樹節(jié)點的高度:指從該節(jié)點到葉子節(jié)點的最長簡單路徑邊

    2024年01月16日
    瀏覽(28)
  • 算法訓練day18Leetcode找樹左下角的值112路徑總和106從中序和后續(xù)遍歷構造二叉樹

    找出深度最大的葉子節(jié)點,左遍歷在前 我們來分析一下題目:在樹的最后一行找到最左邊的值。 首先要是最后一行,然后是最左邊的值。 如果使用遞歸法,如何判斷是最后一行呢,其實就是深度最大的葉子節(jié)點一定是最后一行。 如果對二叉樹深度和高度還有點疑惑的話,請

    2024年01月21日
    瀏覽(39)
  • 算法訓練day11Leetcode20有效的括號1047刪除字符串中所有相鄰重復項150逆波蘭表達式求值

    https://leetcode.cn/problems/valid-parentheses/description/ https://programmercarl.com/0020.%E6%9C%89%E6%95%88%E7%9A%84%E6%8B%AC%E5%8F%B7.html 判斷右括號后忘記pop 括號匹配是使用棧解決的經典問題。 如果還記得編譯原理的話,編譯器在 詞法分析的過程中處理括號、花括號等這個符號的邏輯,也是使用了棧

    2024年01月17日
    瀏覽(20)
  • 算法訓練day20Leetcode654最大二叉樹617合并二叉樹700二叉樹中的1搜索98驗證二叉搜索樹

    https://leetcode.cn/problems/maximum-binary-tree/description/ 中序遍歷遞歸,找到最大值然后作為根節(jié)點 凡是構造二叉樹的題目都用前序遍歷 (中左右) 為先構造中間節(jié)點,然后遞歸構造左子樹和右子樹。 確定遞歸函數的參數和返回值 參數傳入的是存放元素的數組,返回該數組構造的二

    2024年01月21日
    瀏覽(26)
  • leetcode283. 移動零

    leetcode283. 移動零

    難度:簡單題 題目 給定一個數組? nums ,編寫一個函數將所有? 0 ?移動到數組的末尾,同時保持非零元素的相對順序。 請注意 ?,必須在不復制數組的情況下原地對數組進行操作。 思路: 一開始想,從前往后遍歷,遇到0就挪到最后。類似于冒泡的思想,但是這樣做的話時

    2024年02月12日
    瀏覽(19)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領取紅包

二維碼2

領紅包