博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
321 Create Maximum Number 拼接最大数
阅读量:5102 次
发布时间:2019-06-13

本文共 1888 字,大约阅读时间需要 6 分钟。

已知长度分别为 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]

详见:https://leetcode.com/problems/create-maximum-number/description/

C++:

class Solution {public:    vector
maxNumber(vector
& nums1, vector
& nums2, int k) { int m = nums1.size(); int n = nums2.size(); vector
result(k); for (int i = std::max(0 , k - n); i <= k && i <= m; ++i) { auto v1 = maxArray(nums1, i); auto v2 = maxArray(nums2, k - i); vector
candidate = merge(v1, v2, k); if (greater(candidate, 0, result, 0)) { result = candidate; } } return result; } bool greater(vector
& nums1, int i, vector
& nums2, int j) { while (i < nums1.size() && j < nums2.size() && nums1[i] == nums2[j]) { i++; j++; } return j == nums2.size() || (i
nums2[j]); } vector
merge(vector
& nums1, vector
& nums2, int k) { std::vector
ans(k); int i = 0, j = 0; for (int r = 0; r
maxArray(vector
& nums, int k) { int n = nums.size(); vector
result(k); for (int i = 0, j = 0; i < n; i++) { while (n - i + j>k && j > 0 && result[j-1] < nums[i]) { j--; } if (j < k) { result[j++] = nums[i]; } } return result; }};

 参考:https://www.cnblogs.com/CarryPotMan/p/5384172.html

转载于:https://www.cnblogs.com/xidian2014/p/8832370.html

你可能感兴趣的文章
一些方便系统诊断的bash函数
查看>>
<转>关于MFC的多线程类 CSemaphore,CMutex,CCriticalSection,CEvent
查看>>
jquery中ajax返回值无法传递到上层函数
查看>>
css3之transform-origin
查看>>
[转]JavaScript快速检测浏览器对CSS3特性的支持
查看>>
Master选举原理
查看>>
[ JAVA编程 ] double类型计算精度丢失问题及解决方法
查看>>
小别离
查看>>
微信小程序-发起 HTTPS 请求
查看>>
WPF动画设置1(转)
查看>>
基于node/mongo的App Docker化测试环境搭建
查看>>
java web 中base64传输的坑
查看>>
java 中的线程(一)
查看>>
秒杀9种排序算法(JavaScript版)
查看>>
Activiti入门 -- 环境搭建和核心API简介
查看>>
struts.convention.classes.reload配置为true,tomcat启动报错
查看>>
MySQL的并行复制多线程复制MTS(Multi-Threaded Slaves)
查看>>
好玩的-记最近玩的几个经典ipad ios游戏
查看>>
MySQL更改默认的数据文档存储目录
查看>>
PyQt5--EventSender
查看>>