leetcode.321. Create Maximum Number
来源:互联网 发布:奶瓶linux系统 编辑:程序博客网 时间:2024/04/30 01:39
Given two arrays of length
m
and n
with digits 0-9
representing two numbers. Create the maximum number of lengthk <= m + n
from digits of the two. The relative order of the digits from the same array must be preserved. Return an array of thek
digits. You should try to optimize your time and space complexity.Example 1:
nums1 = [3, 4, 6, 5]
nums2 = [9, 1, 2, 5, 8, 3]
k = 5
return [9, 8, 6, 5, 3]
Example 2:
nums1 = [6, 7]
nums2 = [6, 0, 4]
k = 5
return [6, 7, 6, 0, 4]
Example 3:
nums1 = [3, 9]
nums2 = [8, 9]
k = 3
return [9, 8, 9]
class Solution {public:vector<int> maxNumber(vector<int>& nums1, vector<int>& nums2, int k) {int size1 = nums1.size();int size2 = nums2.size();vector<int> res(k);vector<int> tmp(k);for (int i = 0; i <= k; i++){if (k - i > size2) continue;if (i > size1) break;vector<int> num1;vector<int> num2;num1 = getnum(nums1, i);num2 = getnum(nums2, k - i);tmp = mergenum(num1, num2);res = cmp(res, tmp);}return res;}vector<int> getnum(vector<int>& num, int n){vector<int> vec; int drop = num.size()-n; for(int i =0; i< num.size(); i++) { while(drop >0 && vec.size() && num[i] > vec.back()) { drop--; vec.pop_back(); } vec.push_back(num[i]); } vec.resize(n); return vec; }vector<int> mergenum(vector<int> & num1, vector<int> & num2){vector<int> vec; while(num1.size() + num2.size() > 0) { vector<int>& tem = num1>num2?num1:num2; vec.push_back(tem[0]); tem.erase(tem.begin()); } return vec; }vector<int> cmp(vector<int> & num1, vector<int> & num2){int i = 0;int j = 0;while (i < num1.size() && j < num2.size()){if (num1[i]>num2[j])return num1;if (num1[i] < num2[j])return num2;i++;j++;}return num1;}};
0 0
- leetcode 321. Create Maximum Number
- LeetCode 321. Create Maximum Number
- LeetCode-321. Create Maximum Number
- leetcode.321. Create Maximum Number
- [LeetCode]321. Create Maximum Number
- Leetcode-321. Create Maximum Number
- [LeetCode]321. Create Maximum Number
- LeetCode 321. Create Maximum Number
- Leetcode 321. Create Maximum Number
- [Leetcode] 321.Create Maximum Number
- leetcode Create Maximum Number
- Create Maximum Number | LeetCode
- leetcode Create Maximum Number
- LeetCode Create Maximum Number
- leetcode - Create Maximum Number
- [LeetCode] Create Maximum Number
- [LeetCode] Create Maximum Number
- [leetcode] 321. Create Maximum Number 解题报告
- 【蓝桥杯】连续奇数和
- 数据文件的组织形式
- 在tecplot中如何画等高面的底面投影和如何调整等高线的间距?
- some kernel panic reasons and solutions
- Jquery自定义布局框架
- leetcode.321. Create Maximum Number
- 《数据结构》3.1双栈结构
- SourceInsight学习笔记,更新中
- C++作业6
- request实现请求转发和mvc设计模式
- ulimit control
- 【C】printf的返回值
- notepad++
- 字符串 [BF算法] --->字符串