問題描述 :
給定長度分別為 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 的陣列。說明 請盡可能地優化...