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

力扣:1089. 復(fù)寫零

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

今日分享一道力扣經(jīng)典題目,復(fù)寫0!

題目如下:

力扣:1089. 復(fù)寫零,leetcode,算法,數(shù)據(jù)結(jié)構(gòu)

題目分析:

題目要求是進行復(fù)寫0,而且不能超過原數(shù)組長度,且只能在原地進行操作!

解決本題最好的方法就是進行雙指針方法!

算法分析

一、雙指針算法先找到最后一個要復(fù)寫的數(shù)!

二、然后從后向前進行完成復(fù)寫(因為如果要是從前向后進行復(fù)寫會導(dǎo)致元素的覆蓋!)

其中第一大步又是一個雙指針的思想:再次分為了以下幾步!

1.判斷cur指針位置的值!

2.決定des向后移動1或2步?。?span style="color:#fe2c24;">如果cur的值為0則des向后移動兩步,否則移動一步)!

3.判斷是否達到原數(shù)組的最大長度!即(des的位置是否等于n-1)!若des已經(jīng)結(jié)束,直接跳出循環(huán)!

4.若3不滿足,則進行cur++操作!

5.因為最后des的位置可能是數(shù)組長度的最大值,也可能是最大值后面那個值!所以后面還需進行判斷是否以及越界!若以越界,再進行修改即可!

此步驟非常重要!一定要考慮到,如若沒有考慮到,那么則會導(dǎo)致越界的問題!

當(dāng)?shù)谝淮蟛浇Y(jié)束時,此時des位置處于最后需要復(fù)寫的最后一個位置,cur位置為最后一個復(fù)寫的元素!然后最后進行從后向前完成復(fù)寫即可!

畫圖分析:

力扣:1089. 復(fù)寫零,leetcode,算法,數(shù)據(jù)結(jié)構(gòu)

代碼實現(xiàn)

C代碼

void duplicateZeros(int* arr, int arrSize)
{
    //雙指針!解法進行求解!
    //首先先找到最后一個復(fù)寫的元素!
    int cur=0;
    int des=-1;
    while(des<arrSize)
    {
        if(arr[cur])
        {
            des++;
        }
        else if(arr[cur]==0)
        {
            des+=2;
        }
        //必須需要注意的是只要des位于最后一個位置即arrSize-1即停止循環(huán)!
        if(des>=arrSize-1)
        {
            break;
        }
        cur++;
    }

    //經(jīng)過此時,cur位于最后一個復(fù)寫的元素!des位于最后一個位置或者之后的位置!
    //此時需要注意的是,如果des位于n的位置是,此時已經(jīng)越界!
    if(des==arrSize)
    {
        arr[arrSize-1]=0;
        des-=2;
        cur--;
    }

    while(cur>=0)
    {
        if(arr[cur]==0)
        {
            arr[des--]=0;
            arr[des--]=0;
        }
        else
        {
            arr[des]=arr[cur];
            des--;
        }
        cur--;
    }
}

c++代碼

class Solution {
public:
    void duplicateZeros(vector<int>& arr)
    {
        
        int cur=0;
        int des=-1;
        int n=arr.size();
        while(cur<n)
        {
            if(arr[cur])
            {
                des++;
            }
            else
            {
                des+=2;
            }
            if(des>=n-1)
            {
                break;
            }
            cur++;
        }
        if(des==n)
        {
            arr[n-1]=0;
            des-=2;
            cur--;
        }
        while(cur>=0)
        {
            if(arr[cur]==0)
            {
                arr[des--]=0;
                arr[des--]=0;
            }
            else
            {
                arr[des]=arr[cur];
                des--;
            }
            cur--;
        }
    }
};

力扣:1089. 復(fù)寫零,leetcode,算法,數(shù)據(jù)結(jié)構(gòu)

今日分享到此結(jié)束!如若還有不懂,歡迎評論區(qū)留言!文章來源地址http://www.zghlxwxcb.cn/news/detail-738307.html

到了這里,關(guān)于力扣:1089. 復(fù)寫零的文章就介紹完了。如果您還想了解更多內(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)文章

  • 力扣(LeetCode)數(shù)據(jù)結(jié)構(gòu)練習(xí)題(2)

    力扣(LeetCode)數(shù)據(jù)結(jié)構(gòu)練習(xí)題(2)

    今天又寫了兩道關(guān)于鏈表的練習(xí)題,來給大家分享一下。鞏固一下上一篇學(xué)到的鏈表知識,題目可以然我們更清楚的認識鏈表。 目錄 給你單鏈表的頭節(jié)點?head?,請你反轉(zhuǎn)鏈表,并返回反轉(zhuǎn)后的鏈表 給你單鏈表的頭結(jié)點?head?,請你找出并返回鏈表的中間結(jié)點。如果有兩個中

    2024年02月21日
    瀏覽(27)
  • 【數(shù)據(jù)結(jié)構(gòu)】LRU緩存的簡單模擬實現(xiàn)(leetcode力扣146LRU緩存)

    【數(shù)據(jù)結(jié)構(gòu)】LRU緩存的簡單模擬實現(xiàn)(leetcode力扣146LRU緩存)

    LRU是Least Recently Used的縮寫,意思是最近最少使用,它是一種Cache替換算法。 Cache的容量有限,因此當(dāng)Cache的容量用完后,而又有新的內(nèi)容需要添加進來時, 就需要挑選并舍棄原有的部分內(nèi)容,從而騰出空間來放新內(nèi)容。LRU Cache 的替換原則就是將最近最少使用的內(nèi)容替換掉。

    2024年02月03日
    瀏覽(23)
  • 數(shù)據(jù)結(jié)構(gòu)和算法的部分例題(力扣)

    數(shù)據(jù)結(jié)構(gòu)和算法的部分例題(力扣)

    1.1 合并一個數(shù)組的兩個有序區(qū)間 2.1 反轉(zhuǎn)單向鏈表 (方法1)構(gòu)建一個新的鏈表,從就鏈表依次拿到每個節(jié)點,創(chuàng)建新的節(jié)點添加至新鏈表頭部,完成后的新鏈表就是倒序的,簡單,但是需要創(chuàng)建新的對象 (方法2)與方法1類似,構(gòu)建新的鏈表,從頭部移除節(jié)點,添加至新鏈

    2024年01月18日
    瀏覽(21)
  • 【數(shù)據(jù)結(jié)構(gòu)與算法】力扣:對稱二叉樹

    【數(shù)據(jù)結(jié)構(gòu)與算法】力扣:對稱二叉樹

    給你一個二叉樹的根節(jié)點 root , 檢查它是否軸對稱。 示例 1: 輸入:root = [1,2,2,3,4,4,3] 輸出:true 示例 2: 輸入:root = [1,2,2,null,3,null,3] 輸出:false 來源:力扣(LeetCode) 鏈接:https://leetcode.cn/problems/symmetric-tree 著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請

    2024年02月13日
    瀏覽(24)
  • 【數(shù)據(jù)結(jié)構(gòu)與算法】力扣:二叉樹的層序遍歷

    【數(shù)據(jù)結(jié)構(gòu)與算法】力扣:二叉樹的層序遍歷

    給你二叉樹的根節(jié)點 root ,返回其節(jié)點值的 層序遍歷 。 (即逐層地,從左到右訪問所有節(jié)點)。 示例1: 輸入:root = [3,9,20,null,null,15,7] 輸出:[[3],[9,20],[15,7]] 示例 2: 輸入:root = [1] 輸出:[[1]] 示例 3: 輸入:root = [] 輸出:[] 來源:力扣(LeetCode) 鏈接:https://leetcode.cn/p

    2024年02月13日
    瀏覽(29)
  • LeetCode 1089. Duplicate Zeros

    Given a fixed-length integer array? arr , duplicate each occurrence of zero, shifting the remaining elements to the right. Note ?that elements beyond the length of the original array are not written. Do the above modifications to the input array in place and do not return anything. Example 1: Example 2: Constraints: 1 = arr.length = 104 0 = arr[i] = 9 這題

    2024年02月11日
    瀏覽(18)
  • 【算法與數(shù)據(jù)結(jié)構(gòu)】112、LeetCode路徑總和

    【算法與數(shù)據(jù)結(jié)構(gòu)】112、LeetCode路徑總和

    所有的LeetCode題解索引,可以看這篇文章——【算法和數(shù)據(jù)結(jié)構(gòu)】LeetCode題解。 ?? 思路分析 :本題通過計算根節(jié)點到葉子節(jié)點路徑上節(jié)點的值之和,然后再對比目標值。利用文章【算法和數(shù)據(jù)結(jié)構(gòu)】257、LeetCode二叉樹的所有路徑中的遞歸算法。 這里要注意,默認路徑之和是

    2024年02月11日
    瀏覽(28)
  • 【算法與數(shù)據(jù)結(jié)構(gòu)】62、LeetCode不同路徑

    【算法與數(shù)據(jù)結(jié)構(gòu)】62、LeetCode不同路徑

    所有的LeetCode題解索引,可以看這篇文章——【算法和數(shù)據(jù)結(jié)構(gòu)】LeetCode題解。 ?? 思路分析 :機器人只能向下或者向右移動,那么到達(i,j)位置的路徑和(i-1,j)以及(i,j-1)有關(guān)。那么我們就得到的動態(tài)規(guī)劃的表達式 d p [ i ] [ j ] = d p [ i ? 1 ] [ j ] + d p [ i ] [ j ? 1 ] dp[i][

    2024年01月18日
    瀏覽(24)
  • 【算法與數(shù)據(jù)結(jié)構(gòu)】474、LeetCode一和零

    【算法與數(shù)據(jù)結(jié)構(gòu)】474、LeetCode一和零

    所有的LeetCode題解索引,可以看這篇文章——【算法和數(shù)據(jù)結(jié)構(gòu)】LeetCode題解。 ?? 思路分析 :本題要找strs數(shù)組的最大子集,這個子集最多含有 m m m 個0和 n n n 個1。本題也可以抽象成一個01背包的問題。其中,strs內(nèi)的元素就是物品,而 m m m 和 n n n 就是背包的維度。 d p [

    2024年01月22日
    瀏覽(26)
  • 【算法與數(shù)據(jù)結(jié)構(gòu)】343、LeetCode整數(shù)拆分

    【算法與數(shù)據(jù)結(jié)構(gòu)】343、LeetCode整數(shù)拆分

    所有的LeetCode題解索引,可以看這篇文章——【算法和數(shù)據(jù)結(jié)構(gòu)】LeetCode題解。 ?? 思路分析 :博主做這道題的時候一直在思考,如何找到 k k k 個正整數(shù), k k k 究竟為多少合適。從數(shù)學(xué)的邏輯上來說,將 n n n 均分為 k k k 個數(shù)之后, k k k 個數(shù)的乘積為最大(類似于相同周長

    2024年01月17日
    瀏覽(23)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包