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

LeetCode每日一題之 復(fù)寫0

這篇具有很好參考價(jià)值的文章主要介紹了LeetCode每日一題之 復(fù)寫0。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

目錄

題目介紹:

算法原理:

特殊位置處理:

代碼實(shí)現(xiàn):


題目介紹:

題目鏈接:. - 力扣(LeetCode)

LeetCode每日一題之 復(fù)寫0,LeetCode算法刷題,leetcode,算法,職場(chǎng)和發(fā)展,c語(yǔ)言,復(fù)寫0,刷題,面試題

算法原理:

這種對(duì)數(shù)組元素進(jìn)行修改,移動(dòng)的題目我們?nèi)匀豢梢允褂秒p指針?lè)?,不過(guò)我們按照常規(guī)思路從左到右處理數(shù)組,不難發(fā)現(xiàn)如下這種問(wèn)題:

LeetCode每日一題之 復(fù)寫0,LeetCode算法刷題,leetcode,算法,職場(chǎng)和發(fā)展,c語(yǔ)言,復(fù)寫0,刷題,面試題

當(dāng)cur指向1時(shí),讓dest下一個(gè)元素復(fù)寫cur指向的元素,并讓dest和cur++,當(dāng)cur指向0的時(shí)候,?讓dest后兩個(gè)元素復(fù)寫0,并讓cur++,dest+=2。按照這種常規(guī)思路,模擬運(yùn)行幾步就會(huì)發(fā)現(xiàn)問(wèn)題:

LeetCode每日一題之 復(fù)寫0,LeetCode算法刷題,leetcode,算法,職場(chǎng)和發(fā)展,c語(yǔ)言,復(fù)寫0,刷題,面試題

當(dāng)cur指向第一個(gè)0時(shí),會(huì)讓后面的2被0復(fù)寫,這樣就會(huì)導(dǎo)致未處理的數(shù)就會(huì)被覆蓋?。那么如何解決這個(gè)問(wèn)題呢?

當(dāng)雙指針?biāo)惴赡軙?huì)覆蓋未處理數(shù)據(jù)時(shí),我們不妨倒著來(lái)遍歷數(shù)組,假設(shè)我們兩根指針都已找到了結(jié)束位置(如何找到等會(huì)會(huì)講)

LeetCode每日一題之 復(fù)寫0,LeetCode算法刷題,leetcode,算法,職場(chǎng)和發(fā)展,c語(yǔ)言,復(fù)寫0,刷題,面試題

?此時(shí),我們?cè)傧駝偛拍菢樱?/p>

若cur指向的元素不為0,則讓dest指向的元素復(fù)寫cur指向的元素,再cur--,dest--,若cur指向的元素為0,則讓dest指向的元素復(fù)寫0,再dest--,繼續(xù)讓dest指向的元素復(fù)寫0,最后讓dest--,cur--。

這樣之后確實(shí)能像我們預(yù)想一樣處理完數(shù)組,那么現(xiàn)在最重要的問(wèn)題來(lái)了,就是,如何讓兩個(gè)指針找到結(jié)束位置。其實(shí)很簡(jiǎn)單,只要把上面講的常規(guī)思路稍作修改,只移動(dòng)指針,不復(fù)寫數(shù)據(jù),當(dāng)dest走到數(shù)組末尾的時(shí)候結(jié)束:

初始位置如下:

LeetCode每日一題之 復(fù)寫0,LeetCode算法刷題,leetcode,算法,職場(chǎng)和發(fā)展,c語(yǔ)言,復(fù)寫0,刷題,面試題

當(dāng)cur找到非0時(shí),dest++,cur++。

當(dāng)cur找到0時(shí),dest+=2,cur++。

當(dāng)dest走到數(shù)組末尾時(shí)結(jié)束。?

這樣走完后,我們的兩個(gè)指針就會(huì)走到對(duì)應(yīng)結(jié)束的位置。

特殊位置處理:

上面的算法看似完美,實(shí)則還有一個(gè)特殊情況沒(méi)處理,當(dāng)執(zhí)行如下案例時(shí):

LeetCode每日一題之 復(fù)寫0,LeetCode算法刷題,leetcode,算法,職場(chǎng)和發(fā)展,c語(yǔ)言,復(fù)寫0,刷題,面試題

在找結(jié)束位置算法中,兩個(gè)指針走到如上圖所示的位置時(shí),此時(shí)cur指向0,dest走兩個(gè)位置后

LeetCode每日一題之 復(fù)寫0,LeetCode算法刷題,leetcode,算法,職場(chǎng)和發(fā)展,c語(yǔ)言,復(fù)寫0,刷題,面試題

可以發(fā)現(xiàn)dest越界了,我們?cè)傧裰爸v的那樣復(fù)寫時(shí),會(huì)出現(xiàn)越界訪問(wèn),所以要特殊處理一下:

? 當(dāng)cur 和 dest 找到結(jié)束位置后,判斷dest是否等于n(數(shù)組元素個(gè)數(shù)),若等于則是出現(xiàn)了這種情況,我們就用一個(gè)if 自己控制第一步復(fù)寫,然后再讓復(fù)寫算法用循環(huán)走剩下的,第一步復(fù)寫:先--dest,再讓dest指向的元素復(fù)寫cur指向的元素,再dest--,cur--,第一步復(fù)寫后指針位置如圖:

LeetCode每日一題之 復(fù)寫0,LeetCode算法刷題,leetcode,算法,職場(chǎng)和發(fā)展,c語(yǔ)言,復(fù)寫0,刷題,面試題

代碼實(shí)現(xiàn):

void duplicateZeros(int* arr, int arrSize) {
    int dest =-1;
    int cur =0;
    int n =arrSize;
    //找到結(jié)束位置
    while(dest<n-1)
    {
        if(arr[cur]==0)
        {
            dest+=2;
        }
        else
        {
            dest++;
        }
        if(dest<n-1)
        {
           cur++;
        }
    }
    //特殊位置處理
    if(dest==n)
    {
        dest--;
        arr[dest]=arr[cur];
        dest--;
        cur--;
    }
    //開始從后往前進(jìn)行復(fù)寫
    while(cur>=0)
    {
        if(arr[cur]==0)
        {
            arr[dest]=0;
            --dest;
            arr[dest]=0;
            --dest;
        }
        else
        {
            arr[dest]=arr[cur];
            --dest;
        }
        cur--;
    }
}

?

?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-856176.html

到了這里,關(guān)于LeetCode每日一題之 復(fù)寫0的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • Python:每日一題之矩陣拼接

    Python:每日一題之矩陣拼接

    問(wèn)題描述 已知 3 個(gè)矩形的大小依次是 a1?×b1?,a2?×b2??和 a3?×b3??。 用這 3 個(gè)矩形能拼 出的所有多邊形中, 邊數(shù)最少可以是多少? 例如用 3×2?的矩形(用 A 表示)、 4×1?的矩形 (用?B?表示) 和 2×4?的矩 形(用?C?表示)可以拼出如下 4 邊形。 ? 例如用 3×2?的矩形 (用

    2024年02月11日
    瀏覽(18)
  • 每日一題之?dāng)?shù)值的整數(shù)次方

    每日一題之?dāng)?shù)值的整數(shù)次方

    描述: 實(shí)現(xiàn)函數(shù) double Power(double base, int exponent),求 base 的 exponent 次方。 注意: 1.保證base和exponent不同時(shí)為0。 2.不得使用庫(kù)函數(shù),同時(shí)不需要考慮大數(shù)問(wèn)題 3.有特殊判題,不用考慮小數(shù)點(diǎn)后面0的位數(shù)。 我的思路:直接使用遞歸,讓它每次乘一個(gè)它自身。但這存在一個(gè)問(wèn)題,

    2024年02月12日
    瀏覽(20)
  • 【c語(yǔ)言】每日一題之漢諾塔類型

    【c語(yǔ)言】每日一題之漢諾塔類型

    大佬們,我又回來(lái)了,最近也在忙自己的學(xué)業(yè),忙著生活對(duì)線,也參加了今年的藍(lán)橋杯其他的組,發(fā)現(xiàn)今年太難了 ,擺爛了。但我想到了讀者你們,從今天開始繼續(xù)更新博客。通過(guò)寫一篇我隨便寫的有趣的題,打開今年的博客之旅。 BC161 大吉大利,今晚吃雞 糖和抖m在玩?zhèn)€游

    2023年04月16日
    瀏覽(20)
  • 每日一題之打家劫舍II

    題目鏈接 你是一個(gè)專業(yè)的小偷,計(jì)劃偷竊沿街的房屋,每間房?jī)?nèi)都藏有一定的現(xiàn)金。這個(gè)地方所有的房屋都 圍成一圈 ,這意味著第一個(gè)房屋和最后一個(gè)房屋是緊挨著的。同時(shí),相鄰的房屋裝有相互連通的防盜系統(tǒng), 如果兩間相鄰的房屋在同一晚上被小偷闖入,系統(tǒng)會(huì)自動(dòng)報(bào)

    2024年02月08日
    瀏覽(23)
  • 每日一題之兩個(gè)字符串的刪除操作

    題目鏈接 給定兩個(gè)單詞? word1 ?和? word2 ?,返回使得? word1 ?和?? word2 ?** 相同 所需的 最小步數(shù) 。 每步 ?可以刪除任意一個(gè)字符串中的一個(gè)字符。 示例 1: 示例 ?2: 提示: 1 = word1.length, word2.length = 500 word1 ?和? word2 ?只包含小寫英文字母 我們可以定義一個(gè)二維數(shù)組 dp ,

    2024年02月15日
    瀏覽(24)
  • C語(yǔ)言每日一題之旋轉(zhuǎn)數(shù)求最小值

    C語(yǔ)言每日一題之旋轉(zhuǎn)數(shù)求最小值

    hello,今天我們分享一道題目,是??途W(wǎng)上的一道題 求旋轉(zhuǎn)數(shù)組中的最小值https://www.nowcoder.com/practice/9f3231a991af4f55b95579b44b7a01ba?tpId=13tqId=23269ru=/ta/coding-interviewsqru=/ta/coding-interviews/question-ranking 那我們先來(lái)看一下題目的意思,首先要讀懂題目講的是什么 題目說(shuō)一個(gè)非降序數(shù)組,

    2024年02月13日
    瀏覽(19)
  • C語(yǔ)言每日一題之整數(shù)求二進(jìn)制1的個(gè)數(shù)

    C語(yǔ)言每日一題之整數(shù)求二進(jìn)制1的個(gè)數(shù)

    今天分享一道題目,用三種方法來(lái)求解 二進(jìn)制1的個(gè)數(shù) 方法1 我們的十進(jìn)制除10和取余數(shù)就可以得到我們每一位的數(shù)字,那我們的二進(jìn)制也可 以 這是一種方法,另外一種就是我們可以用移位操作符來(lái)算 這個(gè)方法是不是也是特別妙呢,當(dāng)然還有更妙的方法,請(qǐng)看?。?! 相信看

    2024年02月15日
    瀏覽(90)
  • Leetcode刷題之環(huán)形鏈表

    Leetcode刷題之環(huán)形鏈表

    莫等閑,白了少年頭,空悲切。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? --岳飛 目錄 1.環(huán)形鏈表 2.環(huán)形鏈表Ⅱ 給你一個(gè)鏈表的頭節(jié)點(diǎn) head ,判斷鏈表中是否有環(huán)。 如果鏈表中有某個(gè)節(jié)點(diǎn),可以通過(guò)連續(xù)跟蹤 next 指針再次到達(dá),則鏈表中存在環(huán)。 為了表示給定鏈表中

    2023年04月19日
    瀏覽(26)
  • leetcode刷題之回文鏈表

    leetcode刷題之回文鏈表

    目錄 做題思路 代碼實(shí)現(xiàn) 1.找到鏈表的中間節(jié)點(diǎn) 2.反轉(zhuǎn)中間節(jié)點(diǎn)之后的鏈表 3.判斷倒置的后半部分的鏈表是否等于前半部分的鏈表 整體代碼展示 總結(jié): 這里是題目鏈接。234. 回文鏈表 - 力扣(Leetcode) ?這道題目的意思是:判斷該鏈表中后半部分倒置是否跟前半部分相同,如

    2023年04月10日
    瀏覽(18)
  • 刷題之Leetcode209題(超級(jí)詳細(xì))

    力扣題目鏈接(opens new window) https://leetcode.cn/problems/minimum-size-subarray-sum/ 給定一個(gè)含有?n?個(gè)正整數(shù)的數(shù)組和一個(gè)正整數(shù)?s ,找出該數(shù)組中滿足其和 ≥ s 的長(zhǎng)度最小的 連續(xù) 子數(shù)組,并返回其長(zhǎng)度。如果不存在符合條件的子數(shù)組,返回 0。 示例: 輸入:s = 7, nums = [2,3,1,2,4,3] 輸

    2024年04月11日
    瀏覽(17)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包