如何用C++實現(xiàn)混合插入有序數(shù)組

本文小編為大家詳細介紹“如何用C++實現(xiàn)混合插入有序數(shù)組”,內(nèi)容詳細,步驟清晰,細節(jié)處理妥當(dāng),希望這篇“如何用C++實現(xiàn)混合插入有序數(shù)組”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識吧。

創(chuàng)新互聯(lián)服務(wù)項目包括喀什網(wǎng)站建設(shè)、喀什網(wǎng)站制作、喀什網(wǎng)頁制作以及喀什網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,喀什網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到喀什省份的部分城市,未來相信會繼續(xù)擴大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

混合插入有序數(shù)組

Example:

Input:
nums1 = [1,2,3,0,0,0], m = 3
nums2 = [2,5,6],       n = 3

Output: [1,2,2,3,5,6]

混合插入有序數(shù)組,由于兩個數(shù)組都是有序的,所有只要按順序比較大小即可。題目中說了 nums1 數(shù)組有足夠大的空間,說明不用 resize 數(shù)組,又給了m和n,那就知道了混合之后的數(shù)組的大小,這樣就從 nums1 和 nums2 數(shù)組的末尾開始一個一個比較,把較大的數(shù),按順序從后往前加入混合之后的數(shù)組末尾。需要三個變量 i,j,k,分別指向 nums1,nums2,和混合數(shù)組的末尾。進行 while 循環(huán),如果i和j都大于0,再看如果 nums1[i] > nums2[j],說明要先把 nums1[i] 加入混合數(shù)組的末尾,加入后k和i都要自減1;反之就把 nums2[j] 加入混合數(shù)組的末尾,加入后k和j都要自減1。循環(huán)結(jié)束后,有可能i或者j還大于等于0,若j大于0,那么還需要繼續(xù)循環(huán),將 nums2 中的數(shù)字繼續(xù)拷入 nums1。若是i大于等于0,那么就不用管,因為混合數(shù)組本身就放在 nums1 中,參見代碼如下:

解法一: 

class Solution {
public:
    void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
        int i = m - 1, j = n - 1, k = m + n - 1;
        while (i >= 0 && j >= 0) {
            if (nums1[i] > nums2[j]) nums1[k--] = nums1[i--];
            else nums1[k--] = nums2[j--];
        }
        while (j >= 0) nums1[k--] = nums2[j--];
    }
};

我們還可以寫的更簡潔一些,將兩個 while 循環(huán)融合到一起,只要加上 i>=0 且 nums1[i] > nums2[j] 的判斷條件,就可以從 nums1 中取數(shù),否則就一直從 nums2 中取數(shù),參見代碼如下:

解法二:

class Solution {
public:
    void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
        int i = m - 1, j = n - 1, k = m + n - 1;
        while (j >= 0) {
            nums1[k--] = (i >= 0 && nums1[i] > nums2[j]) ? nums1[i--] : nums2[j--];
        }
    }
};

讀到這里,這篇“如何用C++實現(xiàn)混合插入有序數(shù)組”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領(lǐng)會,如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

網(wǎng)頁題目:如何用C++實現(xiàn)混合插入有序數(shù)組
網(wǎng)站網(wǎng)址:http://bm7419.com/article40/iicoho.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷網(wǎng)站內(nèi)鏈、微信公眾號網(wǎng)站設(shè)計公司、網(wǎng)站設(shè)計、搜索引擎優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化