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

算法詳解:楊輝三角 | 合并倆個(gè)有序數(shù)組 | 刪除有序數(shù)組中的重復(fù)項(xiàng)

這篇具有很好參考價(jià)值的文章主要介紹了算法詳解:楊輝三角 | 合并倆個(gè)有序數(shù)組 | 刪除有序數(shù)組中的重復(fù)項(xiàng)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

算法詳解:楊輝三角 | 合并倆個(gè)有序數(shù)組 | 刪除有序數(shù)組中的重復(fù)項(xiàng),算法題庫(kù),Java_SE,算法,windows,數(shù)據(jù)結(jié)構(gòu),java,經(jīng)驗(yàn)分享


前言:本次分享題目全部來(lái)自力扣網(wǎng),大家可以自行選擇挑戰(zhàn),詳細(xì)鏈接:

118. 楊輝三角 - 力扣(LeetCode)

88. 合并兩個(gè)有序數(shù)組 - 力扣(LeetCode)

26. 刪除有序數(shù)組中的重復(fù)項(xiàng) - 力扣(LeetCode)

目錄

一.楊輝三角

思路:

完整代碼:

二.合并倆個(gè)有序數(shù)組

思路:

完整代碼:

三.刪除有序數(shù)組中的重復(fù)項(xiàng)

思路:

完整代碼:


一.楊輝三角

題目:給定一個(gè)非負(fù)整數(shù)?numRows,生成「楊輝三角」的前?numRows?行(1 <= numRows <= 30)

注意:在「楊輝三角」中,每個(gè)數(shù)是它左上方和右上方的數(shù)的和

算法詳解:楊輝三角 | 合并倆個(gè)有序數(shù)組 | 刪除有序數(shù)組中的重復(fù)項(xiàng),算法題庫(kù),Java_SE,算法,windows,數(shù)據(jù)結(jié)構(gòu),java,經(jīng)驗(yàn)分享

示例一:

輸入: numRows = 5
輸出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]

?示例二:

輸入: numRows = 1
輸出: [[1]]

思路:

算法詳解:楊輝三角 | 合并倆個(gè)有序數(shù)組 | 刪除有序數(shù)組中的重復(fù)項(xiàng),算法題庫(kù),Java_SE,算法,windows,數(shù)據(jù)結(jié)構(gòu),java,經(jīng)驗(yàn)分享

我們可以將楊輝三角圖形進(jìn)行轉(zhuǎn)個(gè)方向,改為一個(gè)階梯型的可能更適合我們理解,對(duì)于這樣的階梯型的數(shù)據(jù),我們很自然就會(huì)聯(lián)想到二維數(shù)組,那楊輝三角可不可以用二維數(shù)組實(shí)現(xiàn)呢?

對(duì)于每一行數(shù)據(jù),第一個(gè)和最后一個(gè)都是1,剩下的數(shù)據(jù)都是上一行的同一位置的數(shù)據(jù)加上前一個(gè)數(shù)據(jù),也就是說(shuō)我們?cè)趯?shí)現(xiàn)每一行的數(shù)據(jù)的時(shí)候都需要用到上一行的數(shù)據(jù)。為了更高效的完成上述的過(guò)程我們可以使用二維的順序表代替二維數(shù)組進(jìn)行操作。

在確定了使用二維順序表后,我們需要定義一個(gè)總的順序表去存放每一行對(duì)應(yīng)的順序表,用外層for循環(huán)確定到底有多少行,用內(nèi)層for循環(huán)確定每一行的元素,以上就確定了本題的大概框架。

對(duì)于幾個(gè)細(xì)節(jié)需要注意:

總結(jié)觀察楊輝三角,所有1的位置都是在每一行的開頭和結(jié)尾,開頭很簡(jiǎn)單內(nèi)層for循環(huán) j=0?;的時(shí)候就是開頭位置,而每一行的最后一個(gè)元素,我們仔細(xì)觀察他的坐標(biāo)就會(huì)發(fā)現(xiàn),他的行數(shù)和列數(shù)相等,也就是外層for循環(huán)的循環(huán)變量 i 與內(nèi)層for循環(huán)變量 j 相等的時(shí)候,總結(jié)來(lái)說(shuō)當(dāng)循環(huán)變量 (j == 0 || j == i) 的時(shí)候我們就對(duì)行順序表添加元素 “1”?

對(duì)于非1的數(shù)據(jù),我們需要訪問(wèn)上一行的數(shù)據(jù),通過(guò) .get( i-1) 可以拿到上一行的順序表,拿到上一行的順序表后再分別拿到這一行的 j 位置和 j-1 位置的元素,然后相加,相加后的結(jié)果就是我們要的值,最后再將這個(gè)值使用 .add 添加到這一行的順序表中就可以

算法詳解:楊輝三角 | 合并倆個(gè)有序數(shù)組 | 刪除有序數(shù)組中的重復(fù)項(xiàng),算法題庫(kù),Java_SE,算法,windows,數(shù)據(jù)結(jié)構(gòu),java,經(jīng)驗(yàn)分享

完整代碼:

class Solution {
    public List<List<Integer>> generate(int numRows) {
        List<List<Integer>> ret = new ArrayList<>();
        for (int i = 0; i < numRows; i++) {
            //新定義一行
            List<Integer> row = new ArrayList<>();
            for (int j = 0; j <= i; j++) {
                if (j == 0 || j == i) {
                    row.add(1);
                }else {
                    //添加上一行的數(shù)據(jù)(上一行的j-1和j位置)
                    row.add(ret.get(i-1).get(j-1) + ret.get(i-1).get(j));
                }
            }
            //每一次將新的一行加入總的二維順序表中
            ret.add(row);
        }
        return ret;
    }
}

二.合并倆個(gè)有序數(shù)組

題目:給你兩個(gè)按?非遞減順序?排列的整數(shù)數(shù)組?nums1?和?nums2,另有兩個(gè)整數(shù)?m?和?n?,分別表示?nums1?和?nums2?中的元素?cái)?shù)目。請(qǐng)你?合并?nums2?到?nums1?中,使合并后的數(shù)組同樣按?非遞減順序?排列。

注意:最終,合并后數(shù)組不應(yīng)由函數(shù)返回,而是存儲(chǔ)在數(shù)組?nums1?中。為了應(yīng)對(duì)這種情況,nums1?的初始長(zhǎng)度為?m + n,其中前?m?個(gè)元素表示應(yīng)合并的元素,后?n?個(gè)元素為?0?,應(yīng)忽略。nums2?的長(zhǎng)度為?n?。

示例一:

輸入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3
輸出:[1,2,2,3,5,6]
解釋:需要合并 [1,2,3] 和 [2,5,6] 。
合并結(jié)果是 [1,2,2,3,5,6] 

示例二:

輸入:nums1 = [1], m = 1, nums2 = [], n = 0
輸出:[1]
解釋:需要合并 [1] 和 [] 。
合并結(jié)果是 [1] 

?示例三:

輸入:nums1 = [0], m = 0, nums2 = [1], n = 1
輸出:[1]
解釋:需要合并的數(shù)組是 [] 和 [1] 。
合并結(jié)果是 [1]

思路:

對(duì)于一個(gè)數(shù)組,我們要將其合并到一個(gè)全新的數(shù)組中,我們可以使用倆個(gè)指針,分別指向倆個(gè)數(shù)組,然后對(duì)比倆個(gè)指針誰(shuí)的值小,小的值就放入新數(shù)組中,并且指針后移

算法詳解:楊輝三角 | 合并倆個(gè)有序數(shù)組 | 刪除有序數(shù)組中的重復(fù)項(xiàng),算法題庫(kù),Java_SE,算法,windows,數(shù)據(jù)結(jié)構(gòu),java,經(jīng)驗(yàn)分享

算法詳解:楊輝三角 | 合并倆個(gè)有序數(shù)組 | 刪除有序數(shù)組中的重復(fù)項(xiàng),算法題庫(kù),Java_SE,算法,windows,數(shù)據(jù)結(jié)構(gòu),java,經(jīng)驗(yàn)分享

算法詳解:楊輝三角 | 合并倆個(gè)有序數(shù)組 | 刪除有序數(shù)組中的重復(fù)項(xiàng),算法題庫(kù),Java_SE,算法,windows,數(shù)據(jù)結(jié)構(gòu),java,經(jīng)驗(yàn)分享

對(duì)于放入數(shù)據(jù)一共有4種情況,我們分別對(duì)應(yīng)處理一下:

  1. nums1 的數(shù)據(jù)小于?nums2 的數(shù)據(jù):將?nums1 的數(shù)據(jù)放入新數(shù)組,并且指針pA后移
  2. nums1 的數(shù)據(jù)大于?nums2 的數(shù)據(jù):將?nums2 的數(shù)據(jù)放入新數(shù)組,并且指針pB后移
  3. nums1 的數(shù)據(jù)已經(jīng)排除完了,但是?nums2 還有元素:將?nums2 的元素放入新數(shù)組,并且指針pB后移
  4. ?nums2 的數(shù)據(jù)已經(jīng)排除完了,但是?nums1 還有元素:將nums1的元素放入新數(shù)組,并且指針pA后移

我們使用一個(gè)while循環(huán)來(lái)包含所有的情況遍歷,然后每一次判斷都將一個(gè)數(shù)據(jù)通過(guò)臨時(shí)變量放入新數(shù)組中,為了和服題目要求,將最后的結(jié)果再覆蓋到數(shù)組1中

完整代碼:

class Solution {
    public void merge(int[] nums1, int m, int[] nums2, int n) {
        int pA = 0;
        int pB = 0;
        int cur = 0;
        int[] sordNum = new int[m + n];
        while (pA < m || pB < n) {
            if (pA == m) {//nums1已滿,放入nums2
                cur = nums2[pB++];
            } else if (pB == n) {//nums2已滿,放入nums1
                cur = nums1[pA++];
            } else if (nums1[pA] < nums2[pB]) {//nums1的數(shù)據(jù)小于nums2
                cur = nums1[pA++];
            } else {//nums1的數(shù)據(jù)大于等于nums2
                cur = nums2[pB++];
            }
            sordNum[pA + pB - 1] = cur;
        }
        for (int j = 0; j != m + n; ++j) {
            nums1[j] = sordNum[j];
        }
    }
}

三.刪除有序數(shù)組中的重復(fù)項(xiàng)

題目:給你一個(gè)?非嚴(yán)格遞增排列?的數(shù)組?nums?,請(qǐng)你?原地?刪除重復(fù)出現(xiàn)的元素,使每個(gè)元素?只出現(xiàn)一次?,返回刪除后數(shù)組的新長(zhǎng)度。元素的?相對(duì)順序?應(yīng)該保持?一致?。然后返回?nums?中唯一元素的個(gè)數(shù)。

示例一:

輸入:nums = [1,1,2]
輸出:2, nums = [1,2,_]

示例二:

輸入:nums = [0,0,1,1,1,2,2,3,3,4]
輸出:5, nums = [0,1,2,3,4]

思路:

對(duì)于這里的刪除,我們可以巧妙的利用,具體來(lái)說(shuō)我們可以將不重復(fù)的元素放在數(shù)組前面,然后我們只返回這部分不重復(fù)的元素,這樣就變相的達(dá)到了刪除的目標(biāo)

算法詳解:楊輝三角 | 合并倆個(gè)有序數(shù)組 | 刪除有序數(shù)組中的重復(fù)項(xiàng),算法題庫(kù),Java_SE,算法,windows,數(shù)據(jù)結(jié)構(gòu),java,經(jīng)驗(yàn)分享

算法詳解:楊輝三角 | 合并倆個(gè)有序數(shù)組 | 刪除有序數(shù)組中的重復(fù)項(xiàng),算法題庫(kù),Java_SE,算法,windows,數(shù)據(jù)結(jié)構(gòu),java,經(jīng)驗(yàn)分享

算法詳解:楊輝三角 | 合并倆個(gè)有序數(shù)組 | 刪除有序數(shù)組中的重復(fù)項(xiàng),算法題庫(kù),Java_SE,算法,windows,數(shù)據(jù)結(jié)構(gòu),java,經(jīng)驗(yàn)分享

算法詳解:楊輝三角 | 合并倆個(gè)有序數(shù)組 | 刪除有序數(shù)組中的重復(fù)項(xiàng),算法題庫(kù),Java_SE,算法,windows,數(shù)據(jù)結(jié)構(gòu),java,經(jīng)驗(yàn)分享

算法詳解:楊輝三角 | 合并倆個(gè)有序數(shù)組 | 刪除有序數(shù)組中的重復(fù)項(xiàng),算法題庫(kù),Java_SE,算法,windows,數(shù)據(jù)結(jié)構(gòu),java,經(jīng)驗(yàn)分享

完整代碼:

class Solution {
    public int removeDuplicates(int[] nums) {
        //快慢指針
        int left = 0;
        int right = 1;
        while(right < nums.length){
            if(nums[left] != nums[right]){
                left++;
                nums[left] = nums[right];
            }
            right++;
        }
        return left + 1;
    }
}



?算法詳解:楊輝三角 | 合并倆個(gè)有序數(shù)組 | 刪除有序數(shù)組中的重復(fù)項(xiàng),算法題庫(kù),Java_SE,算法,windows,數(shù)據(jù)結(jié)構(gòu),java,經(jīng)驗(yàn)分享?本次的分享就到此為止了,希望我的分享能給您帶來(lái)幫助,也歡迎大家三連支持,你們的點(diǎn)贊就是博主更新最大的動(dòng)力!算法詳解:楊輝三角 | 合并倆個(gè)有序數(shù)組 | 刪除有序數(shù)組中的重復(fù)項(xiàng),算法題庫(kù),Java_SE,算法,windows,數(shù)據(jù)結(jié)構(gòu),java,經(jīng)驗(yàn)分享如有不同意見(jiàn),歡迎評(píng)論區(qū)積極討論交流,讓我們一起學(xué)習(xí)進(jìn)步!算法詳解:楊輝三角 | 合并倆個(gè)有序數(shù)組 | 刪除有序數(shù)組中的重復(fù)項(xiàng),算法題庫(kù),Java_SE,算法,windows,數(shù)據(jù)結(jié)構(gòu),java,經(jīng)驗(yàn)分享有相關(guān)問(wèn)題也可以私信博主,評(píng)論區(qū)和私信都會(huì)認(rèn)真查看的,我們下次再見(jiàn)算法詳解:楊輝三角 | 合并倆個(gè)有序數(shù)組 | 刪除有序數(shù)組中的重復(fù)項(xiàng),算法題庫(kù),Java_SE,算法,windows,數(shù)據(jù)結(jié)構(gòu),java,經(jīng)驗(yàn)分享文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-751320.html

到了這里,關(guān)于算法詳解:楊輝三角 | 合并倆個(gè)有序數(shù)組 | 刪除有序數(shù)組中的重復(fù)項(xiàng)的文章就介紹完了。如果您還想了解更多內(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)文章

  • 打印楊輝三角

    打印楊輝三角

    這個(gè)公式,不好算,我覺(jué)得還是楊輝三角算起來(lái)方便:c#代碼如下: ? ?double 打印楊輝三角(int n)//n必須是偶數(shù),展開項(xiàng)是n+1,中間項(xiàng)是n/2,此處返回中間項(xiàng)的概率202306131722 ? ? ? ? { ? ? ? ? ? ? //for (int i = 0; i n; i++) ? ? ? ? ? ? //{ ? ? ? ? ? ? // ? ?//這種方法直接算,使

    2024年02月09日
    瀏覽(25)
  • 楊輝三角(Java)

    楊輝三角(Java)

    ?實(shí)現(xiàn)思路:我們可以先把楊輝三角想象成一個(gè)空的二維數(shù)組,然后再給它賦值輸出即可。 關(guān)鍵在于如何賦值:仔細(xì)觀察上圖可以得出除了 每一行第一個(gè)數(shù)以及最后一個(gè)數(shù)(都是1) , 中間的數(shù)字規(guī)律就是: a[ i ][ j ] = a[ i - 1 ][ j - 1 ] + a[ i - 1 ][ j ] 實(shí)現(xiàn)代碼: 相信大家更多的

    2024年02月08日
    瀏覽(16)
  • [LeetCode] #118 楊輝三角

    [LeetCode] #118 楊輝三角

    給定一個(gè)非負(fù)整數(shù)? numRows , 生成「楊輝三角」的前? numRows ? 行。 在「楊輝三角」中, 每個(gè)數(shù)是它左上方和右上方的數(shù)的和。 楊輝三角: ?

    2024年02月15日
    瀏覽(24)
  • 動(dòng)態(tài)規(guī)劃-楊輝三角

    動(dòng)態(tài)規(guī)劃-楊輝三角

    該算法題分別是: 118. 楊輝三角。 119. 楊輝三角 II 在「楊輝三角」中,每個(gè)數(shù)是它左上方和右上方的數(shù)的和。 1.2.1 示例 1: 輸入: numRows = 5 輸出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]] 1.2.2 示例 2: 輸入: numRows = 1 輸出: [[1]] 1.2.3 提示: 1 = numRows = 30 來(lái)源:力扣(LeetCode) 鏈接:https://

    2024年02月13日
    瀏覽(23)
  • 【LeetCode】118. 楊輝三角

    【LeetCode】118. 楊輝三角

    題目鏈接 直覺(jué)解法: 以下的理論介紹 可以說(shuō)和 本題的 代碼實(shí)現(xiàn) 毫無(wú)關(guān)系。 這個(gè)版本 需要注意 列表的邊界 思路: 前一行 兩端 補(bǔ)0 模擬。 結(jié)合 動(dòng)圖 理解 題目 說(shuō)明至少 一行,可以跳過(guò) 第一行的處理 官方版本

    2024年02月07日
    瀏覽(51)
  • C練習(xí)——楊輝三角

    C練習(xí)——楊輝三角

    題目: 打印近似楊輝三角,行數(shù)n自選 百度找的楊輝三角,參考一下: 解析: 把它的全部元素左對(duì)齊,就可以看成近似楊輝三角的樣子 1 1? 1 1? 2? 1 1? 3? 3? 1 1? 4? 6? 4? 1 …… ?每個(gè)數(shù)等于它上方兩數(shù)之和 每行數(shù)字左右對(duì)稱,由1開始逐漸變大 行數(shù)與列數(shù)相同,第n行有

    2024年01月17日
    瀏覽(17)
  • 每日一題,楊輝三角

    每日一題,楊輝三角

    給定一個(gè)非負(fù)整數(shù)?numRows,生成「楊輝三角」的前?numRows?行。 示例 1: 示例?2:

    2024年02月04日
    瀏覽(24)
  • 【C語(yǔ)言】-- 楊輝三角

    【C語(yǔ)言】-- 楊輝三角

    目錄 一.什么是楊輝三角? 二.實(shí)現(xiàn)方法 1.直角三角形版 2.等腰三角形版 楊輝三角形,又稱賈憲三角形,帕斯卡三角形,是二項(xiàng)式系數(shù)在三角形中的一種幾何排列。 形如: 我們不難看出其存在明顯的規(guī)律。 即:圖片的 兩個(gè)斜邊都是數(shù)字1 , 其余的數(shù)都等于 它所在層的肩上(

    2024年02月13日
    瀏覽(22)
  • 【LeetCode】探索楊輝三角模型

    【LeetCode】探索楊輝三角模型

    力扣原題 首先我們要來(lái)了解一下題目本身在說(shuō)些什么,通過(guò)下方的動(dòng)圖我們可以更加清楚地看到楊輝三角是怎樣一步步生成的。 給到的示例中我們通過(guò)輸入楊輝三角的行數(shù),然后通過(guò)計(jì)算得到這個(gè)楊輝三角的每一行是什么具體的數(shù)值 首先我們要做的第一件事就是去選擇正確

    2024年02月14日
    瀏覽(22)
  • LC-楊輝三角-記憶版

    上一篇:LC-楊輝三角 上一篇講了楊輝三角的算法,不過(guò)之前的算法存在一個(gè)問(wèn)題,比如: 我們可以看到計(jì)算a[5][3]和a[5][4]時(shí)都需要a[4][3]的值,之前我們是需要每次用到都重新計(jì)算,這樣就比較耗時(shí),有沒(méi)有辦法記住已經(jīng)算過(guò)的值呢,當(dāng)下次用的時(shí)候直接獲取就不用重新計(jì)算

    2024年02月13日
    瀏覽(17)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包