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

C語(yǔ)言每日一題(22)合并兩個(gè)有序數(shù)組

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

力扣網(wǎng) 88. 合并兩個(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?。

示例 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] ,其中斜體加粗標(biāo)注的為 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] 。
注意,因?yàn)?m = 0 ,所以 nums1 中沒(méi)有元素。nums1 中僅存的 0 僅僅是為了確保合并結(jié)果可以順利存放到 nums1 中。

思路分析

方法1

時(shí)間復(fù)雜度? O(m+n)

空間復(fù)制度 O(m+n)

這是最基本的思路,將兩個(gè)數(shù)組從頭遍歷,分別比較大小,較小的值先放到一個(gè)新創(chuàng)建的數(shù)組里,比較完后可能會(huì)存在剩余的情況,再將剩余的值放入新數(shù)組,題目要求返回?cái)?shù)組1,再將新數(shù)組的內(nèi)容拷貝進(jìn)數(shù)組1里即可

void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n){

    int s1=0;

    int s2=0;

    int num3[200]={0};//新數(shù)組

    int i=0;

    while(s1<m&&s2<n)//任何一個(gè)數(shù)組遍歷完結(jié)束循環(huán)

    {

        if(nums1[s1]<nums2[s2])//較小值先放

        {

            num3[i++]=nums1[s1++];

        }

        else if(nums1[s1]==nums2[s2])//相等則一起放,任意規(guī)則

        {

            num3[i++]=nums1[s1++];

            num3[i++]=nums2[s2++];

        }

        else

        {

            num3[i++]=nums2[s2++];

        }

    }

    if(s1==m)//s1遍歷完的情況下,s2還沒(méi)有遍歷完的情況下

    {

        while(s2<n)

        {

            num3[i++]=nums2[s2++];

        }

    }

    if(s2==n)//s2遍歷完的情況下,s1還沒(méi)有遍歷完

    {

        while(s1<m)

        {

            num3[i++]=nums1[s1++];

        }

    }

    for(int j=0;j<nums1Size;j++)//將新數(shù)組拷貝到數(shù)組1里

    {

        nums1[j]=num3[j];

    }



}

方法2

時(shí)間復(fù)雜度? O(m+n)

空間復(fù)雜度? O(1)

思路:從兩個(gè)數(shù)組的末尾開(kāi)始遍歷,數(shù)組1從最后一個(gè)數(shù)開(kāi)始向前遍歷,較大值放到數(shù)組1的末尾,如果遍歷完數(shù)組2還有剩余的話直接放入。

void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n){
    int s1=m-1;//數(shù)組1的末尾(最后一個(gè)數(shù)字)
    int s2=n-1;//數(shù)組2的末尾
    int index=m+n-1;//(數(shù)組1的末尾)
    while(s1>=0&&s2>=0)
    {
        if(nums1[s1]>nums2[s2])
        {
            nums1[index--]=nums1[s1--];
        }
        else
        {
            nums1[index--]=nums2[s2--];
        }
    }
    while(s2>=0)//數(shù)組2還有剩余的情況
    {
        nums1[index--]=nums2[s2--];
    }

}

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

到了這里,關(guān)于C語(yǔ)言每日一題(22)合并兩個(gè)有序數(shù)組的文章就介紹完了。如果您還想了解更多內(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)文章

  • 【力扣每日一題】2023.8.13 合并兩個(gè)有序數(shù)組

    【力扣每日一題】2023.8.13 合并兩個(gè)有序數(shù)組

    目錄 題目: 示例: 分析: 代碼: 題目給我們兩個(gè)升序數(shù)組,讓我們合并它們,要求合并之后仍然是升序,并且這個(gè)合并操作是在數(shù)組1原地修改的。數(shù)組1的有效數(shù)據(jù)長(zhǎng)度為 m ,而數(shù)組1的長(zhǎng)度為 m + n,n 是數(shù)組2的有效數(shù)據(jù)長(zhǎng)度以及數(shù)組的長(zhǎng)度。 比較直觀容易想到的做法就是

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

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

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

    2024年02月09日
    瀏覽(23)
  • 【每日算法 && 數(shù)據(jù)結(jié)構(gòu)(C++)】—— 03 | 合并兩個(gè)有序數(shù)組(解題思路、流程圖、代碼片段)

    【每日算法 && 數(shù)據(jù)結(jié)構(gòu)(C++)】—— 03 | 合并兩個(gè)有序數(shù)組(解題思路、流程圖、代碼片段)

    An inch of time is an inch of gold, but you can’t buy that inch of time with an inch of gold. An inch of time is an inch of gold, but you can\\\'t buy that inch of time with an inch of gold 給你兩個(gè)有序數(shù)組,請(qǐng)將兩個(gè)數(shù)組進(jìn)行合并,并且合并后的數(shù)組也必須有序 這個(gè)題目要求將兩個(gè)有序數(shù)組合并成一個(gè)有序數(shù)組。在數(shù)

    2024年02月11日
    瀏覽(21)
  • 數(shù)據(jù)結(jié)構(gòu)c語(yǔ)言版:順序表oj題練習(xí)(原地移除元素、合并兩個(gè)有序數(shù)組)

    數(shù)據(jù)結(jié)構(gòu)c語(yǔ)言版:順序表oj題練習(xí)(原地移除元素、合并兩個(gè)有序數(shù)組)

    在單數(shù)組里面歷遍找val,如果是val,就刪除。不是就跳過(guò)。 時(shí)間復(fù)雜度O(n^2),最壞情況每個(gè)都是val。相當(dāng)于一個(gè)等差數(shù)列。 比如 下標(biāo)0開(kāi)始找,0不是,不動(dòng)數(shù)組 下標(biāo)1,1不是,不動(dòng)數(shù)組 下標(biāo)2,2是,刪除元素,變成【0,1,2,3,0,4,2】 下標(biāo)2,2是,刪除元素,變成【0,

    2024年01月23日
    瀏覽(30)
  • 力扣經(jīng)典150題第一題:合并兩個(gè)有序數(shù)組

    合并兩個(gè)有序數(shù)組問(wèn)題詳解與解決方法 1. 介紹 在編程面試中,合并兩個(gè)有序數(shù)組是一個(gè)經(jīng)典的問(wèn)題。它要求將兩個(gè)有序數(shù)組合并為一個(gè)新的有序數(shù)組。本篇博客將深入討論這個(gè)問(wèn)題,并提供解決方法。 2. 問(wèn)題描述 給你兩個(gè)按 非遞減順序 排列的整數(shù)數(shù)組 nums1 和 nums2,另有兩

    2024年04月23日
    瀏覽(28)
  • “三指針?lè)ā昂喜蓚€(gè)有序數(shù)組(力扣每日一練)

    “三指針?lè)ā昂喜蓚€(gè)有序數(shù)組(力扣每日一練)

    ? ? ? ? 我的第一想法確實(shí)是:先合并數(shù)組,再排序,搞完。 ? ? ? ? 哈哈哈,想那么多干嘛,目的達(dá)成了就好了。 力扣官方題解是雙指針: 還有糕手: Python: C#: ? ? ? 總結(jié) ? ? ? ? 可以稱之為\\\"三指針\\\" 方法,因?yàn)槲覀兺瑫r(shí)使用了三個(gè)指針(p1、p2 和 p)來(lái)操作和遍歷兩

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

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

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

    2024年02月04日
    瀏覽(27)
  • C語(yǔ)言每日一題:5.至少是其他數(shù)字的兩倍+兩個(gè)數(shù)組的交集。

    C語(yǔ)言每日一題:5.至少是其他數(shù)字的兩倍+兩個(gè)數(shù)組的交集。

    第一題: 1.需要我們返回最大數(shù)值的下標(biāo),所以先循環(huán)遍歷我們的這個(gè)數(shù)組記錄一下最大的數(shù)值和下標(biāo)位置。 2.使用qsort排序(總是存在唯一的最大整數(shù)) 3所以排序之后的數(shù)組的倒數(shù)第二個(gè)元素就是除了最后一個(gè)元素在數(shù)組中最大的。 4.只需要判斷這個(gè)數(shù)的兩倍是否小于等于

    2024年02月15日
    瀏覽(23)
  • 力扣_數(shù)組26—合并兩個(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ì)這種情況,

    2024年01月21日
    瀏覽(23)
  • 【面試經(jīng)典150 | 數(shù)組】合并兩個(gè)有序數(shù)組

    【面試經(jīng)典150 | 數(shù)組】合并兩個(gè)有序數(shù)組

    本專欄專注于分析與講解【面試經(jīng)典150】算法,兩到三天更新一篇文章,歡迎催更…… 專欄內(nèi)容以分析題目為主,并附帶一些對(duì)于本題涉及到的數(shù)據(jù)結(jié)構(gòu)等內(nèi)容進(jìn)行回顧與總結(jié),文章結(jié)構(gòu)大致如下,部分內(nèi)容會(huì)有增刪: Tag:介紹本題牽涉到的知識(shí)點(diǎn)、數(shù)據(jù)結(jié)構(gòu); 題目來(lái)源:

    2024年02月09日
    瀏覽(22)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包