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

LeetCode_88. 合并兩個有序數(shù)組

這篇具有很好參考價值的文章主要介紹了LeetCode_88. 合并兩個有序數(shù)組。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

題目描述

思路分析

我的題解


題目描述

給你兩個按 非遞減順序 排列的整數(shù)數(shù)組?nums1 和 nums2,另有兩個整數(shù) m 和 n ,分別表示 nums1 和 nums2 中的元素數(shù)目。

請你 合并 nums2 到 nums1 中,使合并后的數(shù)組同樣按 非遞減順序 排列。

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

示例 1:

輸入: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 中的元素。
示例 2:

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

輸入:nums1 = [0], m = 0, nums2 = [1], n = 1
輸出:[1]
解釋:需要合并的數(shù)組是 [] 和 [1] 。
合并結(jié)果是 [1] 。
注意,因為 m = 0 ,所以 nums1 中沒有元素。nums1 中僅存的 0 僅僅是為了確保合并結(jié)果可以順利存放到 nums1 中。
?

提示:

nums1.length == m + n
nums2.length == n
0 <= m, n <= 200
1 <= m + n <= 200
-109 <= nums1[i], nums2[j] <= 109
?

進階:你可以設計實現(xiàn)一個時間復雜度為 O(m + n) 的算法解決此問題嗎?

來源:力扣(LeetCode)
鏈接:https://leetcode.cn/problems/merge-sorted-array
著作權(quán)歸領(lǐng)扣網(wǎng)絡所有。商業(yè)轉(zhuǎn)載請聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。

思路分析

思路1:

? ? ? ? 最簡單粗暴的方法就是先將nums2的所有元素插入到nums1的后面,然后用C\C++內(nèi)置的qsort\sort函數(shù)對其進行排序。當然這個方法并不是一個很好的解法。

思路2:

? ? ? ? 我們可以考慮借助一個額外的數(shù)組來實現(xiàn)排序。首先需要兩個指針i,j來控制兩數(shù)組的下標。然后nums1和nums2從頭開始將較小值放入到這個額外的數(shù)組中。特別的,如果其中一個數(shù)組的指針走到了最后,就直接將另一個數(shù)組的內(nèi)容放入到額外的數(shù)組中。

思路3:

? ? ? ? 雖然感覺思路2已經(jīng)可以了,但還是差點意思,就是是否可以不使用額外的空間呢?答案是可以的。由于思路2的nums1和nums2是從頭開始的,為了防止與nums1的內(nèi)容沖突所以需要一個額外的數(shù)組,那么我們可以從后開始,因為nums1的最后是沒有數(shù)據(jù)的,所以我們可以從后開始,不斷將兩數(shù)組i,j位置兩數(shù)的較大值放入nums1的i+j+2的位置(至于為什么是這個等式,畫圖看一下就會豁然開朗)。

我的題解

思路3的代碼文章來源地址http://www.zghlxwxcb.cn/news/detail-414569.html

void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n)
{
    int i = m - 1, j = n - 1; //i是nums1的下標,j是nums2的下標
    int value = 0; 
    while ( i + j + 1 >= 0) 
    {
        if(i == -1)
        {
             value = nums2[j--];
        }
        else if(j == -1)
        {
            value = nums1[i--]; 
        }
        else
            value = nums1[i] >= nums2[j] ? nums1[i--] : nums2[j--];
        nums1[i + j + 2] = value;
    }
}

到了這里,關(guān)于LeetCode_88. 合并兩個有序數(shù)組的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • ?LeetCode解法匯總88. 合并兩個有序數(shù)組

    https://github.com/September26/java-algorithms 給你兩個按? 非遞減順序 ?排列的整數(shù)數(shù)組? nums1 ? 和? nums2 ,另有兩個整數(shù)? m ?和? n ?,分別表示? nums1 ?和? nums2 ?中的元素數(shù)目。 請你? 合并 ? nums2 ? 到? nums1 ?中,使合并后的數(shù)組同樣按? 非遞減順序 ?排列。 注意: 最終,合并

    2024年02月12日
    瀏覽(29)
  • LeetCode面試算法-力扣 88. 合并兩個有序數(shù)組

    88. 合并兩個有序數(shù)組 題目描述 ? ? 給你兩個按 非遞減順序 排列的整數(shù)數(shù)組 nums1 和 nums2,另有兩個整數(shù) m 和 n ,分別表示 nums1 和 nums2 中的元素數(shù)目。請你 合并 nums2 到 nums1 中,使合并后的數(shù)組同樣按 非遞減順序 排列。 注意: 最終,合并后數(shù)組不應由函數(shù)返回,而是存儲

    2024年02月10日
    瀏覽(20)
  • LeetCode-Java:88合并兩個有序數(shù)組

    給你兩個按 非遞減順序 排列的整數(shù)數(shù)組 nums1 和 nums2 ,另有兩個整數(shù) m 和 n ,分別表示 nums1 和 nums2 中的元素數(shù)目。 請你 合并 nums2 到 nums1 中,使合并后的數(shù)組同樣按 非遞減順序 排列。 注意:最終,合并后數(shù)組不應由函數(shù)返回,而是存儲在數(shù)組 nums1 中。為了應對這種情況

    2024年02月05日
    瀏覽(29)
  • 88. 合并兩個有序數(shù)組、Leetcode的Python實現(xiàn)

    博客主頁:??李歘歘的博客 ?? ??每天不定期分享一些包括但不限于計算機基礎、算法、后端開發(fā)相關(guān)的知識點,以及職場小菜雞的生活。?? ??點關(guān)注不迷路,總有一些??知識點??是你想要的?? ??今天的內(nèi)容是 ? ? Leetcode? 88. 合并兩個有序數(shù)組? ?? ? ?????????

    2024年02月06日
    瀏覽(24)
  • 力扣每日一道系列 --- LeetCode 88. 合并兩個有序數(shù)組

    力扣每日一道系列 --- LeetCode 88. 合并兩個有序數(shù)組

    ?? 江池?。?個人主頁 ??個人專欄: ?數(shù)據(jù)結(jié)構(gòu)探索 ?LeetCode每日一道 ?? 有航道的人,再渺小也不會迷途。 LeetCode 88. 合并兩個有序數(shù)組 首先創(chuàng)建一個臨時數(shù)組,其大小為第一個數(shù)組的大?。磏ums1Size),其作用主要是。 通過循環(huán)遍歷兩個數(shù)組,將兩個數(shù)組元素比較后較

    2024年02月04日
    瀏覽(27)
  • 算法leetcode|88. 合并兩個有序數(shù)組(rust重拳出擊)

    給你兩個按 非遞減順序 排列的整數(shù)數(shù)組 nums1 和 nums2 ,另有兩個整數(shù) m 和 n ,分別表示 nums1 和 nums2 中的元素數(shù)目。 請你 合并 nums2 到 nums1 中,使合并后的數(shù)組同樣按 非遞減順序 排列。 注意 :最終,合并后數(shù)組不應由函數(shù)返回,而是存儲在數(shù)組 nums1 中。為了應對這種情況

    2024年02月05日
    瀏覽(23)
  • 27.移除元素+88.合并兩個有序數(shù)組

    27.移除元素+88.合并兩個有序數(shù)組

    目錄 一、移除元素 (一)題目 (二)代碼? 二、合并兩個有序數(shù)組 (一)題目 (二)代碼 27. 移除元素 - 力扣(LeetCode) ? ? 88. 合并兩個有序數(shù)組 - 力扣(LeetCode)? ? 用雙指針 ?

    2023年04月14日
    瀏覽(29)
  • 力扣每日一題88:合并兩個有序數(shù)組

    給你兩個按? 非遞減順序 ?排列的整數(shù)數(shù)組? nums1 ? 和? nums2 ,另有兩個整數(shù)? m ?和? n ?,分別表示? nums1 ?和? nums2 ?中的元素數(shù)目。 請你? 合并 ? nums2 ? 到? nums1 ?中,使合并后的數(shù)組同樣按? 非遞減順序 ?排列。 注意: 最終,合并后數(shù)組不應由函數(shù)返回,而是存儲在

    2024年02月07日
    瀏覽(24)
  • 【力扣每日一題】88. 合并兩個有序數(shù)組 &雙指針 & 輔助數(shù)組 & 8.13打卡

    【力扣每日一題】88. 合并兩個有序數(shù)組 &雙指針 & 輔助數(shù)組 & 8.13打卡

    88. 合并兩個有序數(shù)組 難度: 簡單 描述: 給你兩個按 非遞減順序 排列的整數(shù)數(shù)組 nums1 和 nums2,另有兩個整數(shù) m 和 n ,分別表示 nums1 和 nums2 中的元素數(shù)目。 請你 合并 nums2 到 nums1 中,使合并后的數(shù)組同樣按 非遞減順序 排列。 注意:最終,合并后數(shù)組不應由函數(shù)返回,而

    2024年02月09日
    瀏覽(23)
  • LeetCode 0088. 合并兩個有序數(shù)組

    力扣題目鏈接:https://leetcode.cn/problems/merge-sorted-array/ 給你兩個按 非遞減順序 排列的整數(shù)數(shù)組? nums1 和 nums2 ,另有兩個整數(shù) m 和 n ,分別表示 nums1 和 nums2 中的元素數(shù)目。 請你 合并 nums2 到 nums1 中,使合并后的數(shù)組同樣按 非遞減順序 排列。 注意: 最終,合并后數(shù)組不應由

    2024年02月13日
    瀏覽(34)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包