/** * @param nums1 an integer array of length m with digits 0-9 * @param nums2 an integer array of length n with digits 0-9 * @param k an integer and k <= m + n * @return an integer array */ vector maxNumber(vector<int>& nums1, vector<int>& nums2, int k) { // Write your code here int len1 = nums1.size(), len2 = nums2.size(); vector results; for (int k1 = max(k - len2, 0); k1 <= min(k, len1); ++k1) results = max(results, maxNumber(maxNumber(nums1, k1), maxNumber(nums2, k - k1))); return results; }
vector<int> maxNumber(vector<int>& nums1, vector<int>& nums2, int k) { int n1 = nums1.size(), n2 = nums2.size(); vector<int> res; for (int k1 = max(k - n2, 0); k1 <= min(k, n1); ++k1) { res = max(res, maxNumber(maxNumber(nums1, k1), maxNumber(nums2, k - k1))); } return res; }
vector<int> maxNumber(vector<int>& nums1, vector<int>& nums2, int k) { vector<int> result; for (int i = 0; i <= k; i++) { if (i > nums1.size() || k-i > nums2.size()) continue; vector<int> num = merge(maxNumber(nums1, i), maxNumber(nums2, k-i)); if (result.empty() || compare(result, num) < 0) { result = num; } } return result; }