拼接最大數

2021-10-08 03:29:40 字數 1820 閱讀 9343

問題描述 :

給定長度分別為 m 和 n 的兩個陣列,其元素由 0-9 構成,表示兩個自然數各位上的數字。現在從這兩個陣列中選出 k (k <= m + n) 個數字拼接成乙個新的數,要求從同乙個陣列中取出的數字保持其在原陣列中的相對順序。求滿足該條件的最大數。結果返回乙個表示該最大數的長度為 k 的陣列。

說明: 請盡可能地優化你演算法的時間和空間複雜度。

示例 1:

輸入:nums1 = [3, 4, 6, 5]

nums2 = [9, 1, 2, 5, 8, 3]

k = 5

輸出:[9, 8, 6, 5, 3]

示例 2:

輸入:nums1 = [6, 7]

nums2 = [6, 0, 4]

k = 5

輸出:[6, 7, 6, 0, 4]

示例 3:

輸入:nums1 = [3, 9]

nums2 = [8, 9]

k = 3

輸出:[9, 8, 9]

輸入說明 :

首先輸入陣列長度m,然後輸入m個0-9的數字,各數字以空格分隔。

然後輸入陣列長度n,然後輸入n個0-9的數字,各數字以空格分隔。

最後輸入整數k。

輸出說明 :

輸出結果陣列,輸出內容無空格。

輸入範例 :

26 7

36 0 4

5輸出範例 :

67604

#include

#include

using

namespace std;

vector<

int>

largestk

(vector<

int>

&nums,

int count)

t.push_back

(nums[i]);

} vector<

int>

res(t.

begin()

,t.begin()

+count)

;return res;

}vector<

int>

merge

(vector<

int>

&nums1,vector<

int>

&nums2)

else

}while

(isize()

)while

(jsize()

)return res;

} vector<

int>

maxnumber

(vector<

int>

&nums1,vector<

int>

&nums2,

int k)

if(k-i<=nums2.

size()

)}}return res;

}int

main()

cin>>n;

for(

int i=

0; i) cin>>k;

vector<

int> res=

maxnumber

(nums1,nums2,k)

;for

(int i=

0; isize()

; i++

) cout<;return0;

}

拼接最大數

給定長度分別為 m 和 n 的兩個陣列,其元素由 0 9 構成,表示兩個自然數各位上的數字。現在從這兩個陣列中選出 k k m n 個數字拼接成乙個新的數,要求從同乙個陣列中取出的數字保持其在原陣列中的相對順序。求滿足該條件的最大數。結果返回乙個表示該最大數的長度為 k 的陣列。說明 請盡可能地優化...

321 拼接最大數

給定長度分別為m和n的兩個陣列,其元素由0 9構成,表示兩個自然數各位上的數字。現在從這兩個陣列中選出k k m n 個數字拼接成乙個新的數,要求從同乙個陣列中取出的數字保持其在原陣列中的相對順序。求滿足該條件的最大數。結果返回乙個表示該最大數的長度為k的陣列。說明 請盡可能地優化你演算法的時間和空...

321 拼接最大數

給定長度分別為 m 和 n 的兩個陣列,其元素由 0 9 構成,表示兩個自然數各位上的數字。現在從這兩個陣列中選出 k k m n 個數字拼接成乙個新的數,要求從同乙個陣列中取出的數字保持其在原陣列中的相對順序。求滿足該條件的最大數。結果返回乙個表示該最大數的長度為 k 的陣列。說明 請盡可能地優化...