321.拼接最大数(xx笔试变体拼接最小数)

ops/2024/10/18 14:26:19/

前言

昨天做人生中第一场找工作笔试题碰到了这道题的变体拼接最小数,是编程题的最后一道,苦思冥想没做出来,结束后去搜发现了力扣上有拼接最大数这道题(变体题在这个基础上变难了,其中某个数组可能为空同时还得考虑0不能放开头的情况)

题目

给你两个整数数组 nums1nums2,它们的长度分别为 mn。数组 nums1nums2 分别代表两个数各位上的数字。同时你也会得到一个整数 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]

思路

单调栈先选出来两个数组中i和i-k的情况,然后通过一个merge函数进行合并

遍历所有情况选出最大值即可

代码如下:

class Solution(object):def maxNumber(self, nums1, nums2, k):​def pick_max(nums,k):stack = []drop = len(nums) - kfor num in nums:while drop and stack and stack[-1] < num:stack.pop()drop -= 1stack.append(num)return stack[:k]def merge(A,B):ans = []while A or B:bigger = A if A > B else Bans.append(bigger.pop(0))return ansreturn max(merge(pick_max(nums1,i),pick_max(nums2,k-i)) for i in range(k + 1) if i <= len(nums1) and k - i <= len(nums2))

变体拼接最小数

这个我笔试的时候是没想出来的,考虑的情况骤增,因为0不能放在最前面同时在判断两个数组大小的时候选小数组可能小数组已经变为空了,后面这个问题还好解决,重点是前面的0不能放前面,目前尚未想出,等高手来给我解答一下

代码如下:

class Solution(object):def maxNumber(self, nums1, nums2, k):def pick_min(nums,k):stack = []drop = len(nums) - kfor num in nums:while drop and stack and stack[-1] > num:stack.pop()drop -= 1stack.append(num)return stack[:k]def merge(A,B):ans = []while A or B:if not A:ans.append(B.pop(0))elif not B:ans.append(A.pop(0))elif A < B:ans.append(A.pop(0))else:ans.append(B.pop(0))return ansreturn min(merge(pick_min(nums1,i),pick_min(nums2,k - i)) for i in range(k+1) if i <= len(nums1) and k - i <= len(nums2))


http://www.ppmy.cn/ops/90364.html

相关文章

SQL布尔盲注

目录 1 布尔盲注 2布尔盲注流程 2.1输入id进行测试 2.2判断注入类型 2.3爆数据库名 2.4爆表名 2.5爆字段名 2.6查询数据 1 布尔盲注 布尔盲注就是在SQL注入过程中&#xff0c;SQL语句执行后&#xff0c;查询到的数据不能回显到前端页面&#xff0c;如果正确执行了构造的…

Visual Studio 的介绍和详解

Visual Studio是微软公司推出的一款功能强大的开发工具包系列产品&#xff0c;它提供了一个基本完整的开发工具集&#xff0c;为软件开发者提供了整个软件生命周期中所需的大部分工具。以下是对Visual Studio的详细介绍和详解&#xff1a; 一、Visual Studio的基本介绍 定义与…

【web3.0】Web3 开发教程与代码资源:探索如何在Web3项目中开发应用

引言 Web3&#xff0c;作为区块链技术和互联网融合的产物&#xff0c;正逐步重塑我们对数字世界的理解与交互方式。它不仅仅是一个技术概念&#xff0c;更是一个去中心化、用户主权的网络愿景&#xff0c;旨在通过智能合约、去信任的交易和加密货币等技术手段&#xff0c;为用…

windows下在线预览服务kkFileView4.4.0问题记录

前几天找到一个开源项目&#xff1a;kkFileView&#xff0c;感觉可能以后可能会用到&#xff0c;所以尝试了下。 通过git下载下来&#xff0c;版本是4.4.0&#xff0c;通过idea打开项目&#xff0c;发现老是无法找到组件aspose-cad&#xff0c;版本是23.9. 找了好多文章&#x…

pytorch中的hook机制register_forward_hook

上篇文章主要介绍了hook钩子函数的大致使用流程&#xff0c;本篇文章主要介绍pytorch中的hook机制register_forward_hook&#xff0c;手动在forward之前注册hook&#xff0c;hook在forward执行以后被自动执行。 1、hook背景 Hook被成为钩子机制&#xff0c;pytorch中包含forwa…

Oceanbase 执行计划

test100 CREATE TABLE `test100` ( `GRNT_CTR_NO` varchar(32) COLLATE utf8mb4_bin NOT NULL COMMENT 担保合同编号, `GRNT_CTR_TYP` varchar(3) COLLATE utf8mb4_bin NOT NULL COMMENT 担保合同类型, `COLC_GRNT_IND` varchar(1) COLLATE utf8mb4_bin DEFAULT NULL …

ELK 之logstash filter grok常见内置模式

Logstash 的 grok 过滤器是一种用于解析非结构化日志数据的强大工具。grok 使用了一系列模式来解析和提取日志消息中的数据。这些模式可以用来识别并提取特定的数据字段&#xff0c;如 IP 地址、日期、URL、数字等。grok 提供了一些常见的内置模式&#xff0c;以下是一些最常见…

oracle数据库监控数据库中某个表是否正常生成

事情经过&#xff1a; 公司某业务系统每月25日0点会自动生成下个月的表&#xff0c;表名字是tabname_202407的格式。由于7月25日0点做系统保养的时候重启了应用系统服务&#xff0c;导致8月份的表没有生成。最终操作业务影响&#xff0c;为此决定对这个表进行监控&#xff0c;…