建立最大數 LintCode

2021-08-10 05:34:41 字數 968 閱讀 9390

給出兩個長度分別是m和n的陣列來表示兩個大整數,陣列的每個元素都是數字0-9。從這兩個陣列當中選出k個數字來建立乙個最大數,其中k滿足k <= m + n。選出來的數字在建立的最大數裡面的位置必須和在原陣列內的相對位置一致。返回k個數的陣列。你應該盡可能的去優化演算法的時間複雜度和空間複雜度。

樣例:

給出 nums1 = [3, 4, 6, 5], nums2 = [9, 1, 2, 5, 8, 3], k = 5

返回 [9, 8, 6, 5, 3]

給出 nums1 = [6, 7], nums2 = [6, 0, 4], k = 5

返回 [6, 7, 6, 0, 4]

給出 nums1 = [3, 9], nums2 = [8, 9], k = 3

返回 [9, 8, 9]

思路:

由於取k個數,可以分別在nums1,nums2中取k1,k2個數,k1+k2=k;

計算在nums中取k個數,組合成最大數,返回vector;

將得到的vector合併,遍歷不同的組合情況,取最大值。

#ifndef c552_h

#define c552_h

#include

#include

using

namespace

std;

class solution

return res;

}vector

findvector(vector

v, int k)

res.push_back(c);

}res.resize(k);

return res;

}vector

mergevector(vector

v1, vector

v2)

else

}return res;

}};#endif

LINTCODE 建立最大數

lintcode 建立最大數 思路 把這個問題分成兩個子問題 首先,求在陣列中nums取k個數所能組成的最大數 然後,把兩個陣列,nums1,nums2合併所能組成的最大數 前提都是數字相對位置不變 ps c 若已知nums1,nums2,則兩個陣列的大小可以直接用 等運算子來判斷,這個和字串一樣,...

建立最大數

題目描述 給出兩個長度分別是m和n的陣列來表示兩個大整數,陣列的每個元素都是數字0 9。從這兩個陣列當中選出k個數字來建立乙個最大數,其中k滿足k m n。選出來的數字在建立的最大數裡面的位置必須和在原陣列內的相對位置一致。返回k個數的陣列。你應該盡可能的去優化演算法的時間複雜度和空間複雜度。樣例 ...

lintcode練習 184 最大數

給出一組非負整數,重新排列他們的順序把他們組成乙個最大的整數。最後的結果可能很大,所以我們返回乙個字串來代替這個整數。您在真實的面試中是否遇到過這個題?是 給出 1,20,23,4,8 返回組合最大的整數應為8423201。在 o nlogn 的時間複雜度內完成。實現 注意 python3中內建函式...