当前位置:网站首页>LeetCode Daily Question (321. Create Maximum Number)
LeetCode Daily Question (321. Create Maximum Number)
2022-08-09 22:07:00 【wangjun861205】
You are given two integer arrays nums1 and nums2 of lengths m and n respectively. nums1 and nums2 represent the digits of two numbers. You are also given an integer k.
Create the maximum number of length k <= m + n from digits of the two numbers. The relative order of the digits from the same array must be preserved.
Return an array of the k digits representing the answer.
Example 1:
Input: nums1 = [3,4,6,5], nums2 = [9,1,2,5,8,3], k = 5
Output: [9,8,6,5,3]
Example 2:
Input: nums1 = [6,7], nums2 = [6,0,4], k = 5
Output: [6,7,6,0,4]
Example 3:
Input: nums1 = [3,9], nums2 = [8,9], k = 3
Output: [9,8,9]
Constraints:
- m == nums1.length
- n == nums2.length
- 1 <= m, n <= 500
- 0 <= nums1[i], nums2[i] <= 9
- 1 <= k <= m + n
对于任意一个数组 nums, any fixed length length Must correspond to a unique largest array, So go down this way, Suppose the final array length to be obtained is k, That final array must be max_array(nums1, length)与 max_array(nums2, k-length)组合而成的, So we just need to iterate through these cases and put max_array1 与 max_array2 Combined into a maximum length of k 的数组就可以了.
impl Solution {
fn max_with_fixed_length(mut nums: Vec<i32>, length: usize) -> Vec<i32> {
let mut stack = Vec::new();
'outer: while stack.len() + nums.len() > length && nums.len() > 0 {
if stack.is_empty() {
stack.push(nums.remove(0));
continue;
}
let curr = nums.remove(0);
while let Some(last) = stack.pop() {
if last >= curr {
stack.push(last);
stack.push(curr);
continue 'outer;
}
if stack.len() + nums.len() + 1 == length {
break;
}
}
stack.push(curr);
}
stack.append(&mut nums);
if stack.len() > length {
stack = stack[..length].to_vec();
}
stack
}
fn is_greater(mut nums1: Vec<i32>, mut nums2: Vec<i32>) -> bool {
while nums1.len() < nums2.len() {
nums1.push(0);
}
while nums1.len() > nums2.len() {
nums2.push(0);
}
for (n1, n2) in nums1.into_iter().zip(nums2.into_iter()) {
if n1 == n2 {
continue;
}
if n1 > n2 {
return true;
}
return false;
}
false
}
fn merge(nums1: &[i32], nums2: &[i32]) -> Vec<i32> {
let mut res = Vec::new();
let mut i = 0;
let mut j = 0;
while i < nums1.len() && j < nums2.len() {
if nums1[i] == nums2[j] {
if Solution::is_greater(nums1[i + 1..].to_vec(), nums2[j + 1..].to_vec()) {
res.push(nums1[i]);
i += 1;
continue;
}
res.push(nums2[j]);
j += 1;
continue;
}
if nums1[i] > nums2[j] {
res.push(nums1[i]);
i += 1;
continue;
}
res.push(nums2[j]);
j += 1;
}
if i < nums1.len() {
res.append(&mut nums1[i..].to_vec());
}
if j < nums2.len() {
res.append(&mut nums2[j..].to_vec());
}
res
}
pub fn max_number(nums1: Vec<i32>, nums2: Vec<i32>, k: i32) -> Vec<i32> {
let mut ans = vec![0; k as usize];
for i in 1..=(k as usize).min(nums1.len()) {
if k as usize - i <= nums2.len() {
let max1 = Solution::max_with_fixed_length(nums1.clone(), i);
let max2 = Solution::max_with_fixed_length(nums2.clone(), k as usize - i);
let curr = Solution::merge(&max1, &max2);
if Solution::is_greater(curr.clone(), ans.clone()) {
ans = curr;
}
}
}
ans
}
}
边栏推荐
- How are data integration APIs key to enterprise digital transformation?
- Transformer如何用于3D视觉?阿联酋MBZUAI最新《3D视觉Transformers处理》综述,涵盖100+种方法
- DSPE-PEG-Silane,DSPE-PEG-SIL,磷脂-聚乙二醇-硅烷修饰二氧化硅颗粒用
- laravel 时区问题timezone
- 大健康产业商业供应链管理系统数字化提升产业链运作效率推动供应链标准化建设
- WPF中加载并使用图像资源
- 安科瑞无线物联网智能电表ADW300指导性技术要求-Susie 周
- prometheus学习3Grafana部署及基本使用
- 【Jmeter】分布式搭建
- An overall security understanding and method of cyberspace based on connection and security entropy
猜你喜欢

一千以内的水仙花数

力扣15-三数之和——HashSet&双指针法

小满nestjs(第四章 前置知识装饰器-实现一个GET请求)

小满nestjs(第五章 nestjs cli)

【kali-密码攻击】(5.1.1)密码在线破解:Hydra(图形界面)

字节二面问的MySQL,差点没答好

力扣383-赎金信——哈希映射数组法

DSPE-PEG-Azide,DSPE-PEG-N3,磷脂-聚乙二醇-叠氮可和DBCO直接反应

visual studio 2022调试技巧介绍

ebook download | "Business executives' IT strategy guide - why enterprises should implement DevOps"
随机推荐
基于SSM实现手机销售商城系统
Access control knowledge
Prometheus Operator 自定义监控添加redis explorer
laravel 时区问题timezone
《评估、创建和使用知识图谱的限制》2022最新230页博士论文,根特大学
小满nestjs(第六章 nestjs cli 常用命令)
软件测试技术之如何编写测试用例(6)
MySQL, which is asked on both sides of the byte, almost didn't answer well
SqlServer 2016 备份和还原
华为云全流程护航《流浪方舟》破竹首发,打造口碑爆款
【kali-权限提升】(4.2.7)社会工程学工具包:权限维持创建后门、清除痕迹
Number of daffodils within a thousand
hdu 2647 Reward(拓扑排序)
Laravel DB批量更新的方法
[Free column] Xposed plug-in development for Android security [from scratch] tutorial
CMake 安装升级更高版本
移动端,PC端,微信等常用平台和浏览器判断
加工制造业智慧采购系统解决方案:助力企业实现全流程采购一体化协同
axi4c
解决执行Command报错executable file not found in $PATH