LeetCode 179 in Python. Largest Number (最大数)

news2025/1/6 18:58:17

寻找最大数的逻辑简单,但如何对两数比较组成更大的整数是一个重点。例如示例2中如何区分3与30谁放在前面以及3与34谁放在前面是一个难点,本文通过采用functools中的自定义排序规则cmp_to_key()来判断上述情况,并给出代码实现。

示例:

图1 最大数输入输出示例 

代码:

class Solution:
    def largestNumber(self, nums: List[int]) -> str:
        for i, num in enumerate(nums):
            nums[i] = str(num)
        
        def compare(n1, n2):
            if n1 + n2 > n2 + n1:
                return -1
            elif n1 + n2 < n2 + n1:
                return 1
            else:
                return 0

        nums = sorted(nums, key = cmp_to_key(compare))

        return str(int("".join(nums)))

 解释:

1)题目为防止输出结果过大,要求输出字符串,于是先将数组元素转换为字符串:

        for i, num in enumerate(nums):

                nums[i] = str(num)

2)然后即对nums数组排序,排序方式通过functools中cmp_to_key()进行自定义,自定义函数即为cmp_to_key()的参数compare:

        nums = sorted(nums, key = cmp_to_key(compare))

3)compare函数设置排序规则选择能组成更大整数的排序形式,返回-1为不变,返回1为相反。

        def compare(n1, n2):

                if n1 + n2 > n2 + n1:

                        return -1

                elif n1 + n2 < n2 + n1:

                        return 1

                else:

                        return 0

关于cmp_to_key()的用法和详细解释可见:

自定义排序规则:functools.cmp_to_key(callable)-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1601967.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CTFshow-PWN-前置基础(pwn17)

有些命令好像有点不一样&#xff1f; 不要一直等&#xff0c;可能那样永远也等不到flag nc 上后&#xff0c;经过简单测试&#xff0c;1 和 4 并没有什么重要信息 3 会陷入一个等待&#xff0c;题目有说明不要一直等 &#xff0c;而 5 是退出&#xff0c;因此猜测突破口在 2 键…

基于springboot实现知识管理系统项目【项目源码+论文说明】

基于springboot实现知识管理系统演示 摘要 随着信息互联网信息的飞速发展&#xff0c;无纸化作业变成了一种趋势&#xff0c;针对这个问题开发一个专门适应师生作业交流形式的网站。本文介绍了知识管理系统的开发全过程。通过分析企业对于知识管理系统的需求&#xff0c;创建了…

FANUC发那科机器人示教器维修A05B-2490-C176

维修的fanuc发那科产品包括&#xff1a;发那科cnc数控系统,发那科伺服驱动器和伺服电机维修,发那科机器人维修&#xff0c;以及fanuc主轴驱动模块维修,发那科模块电源维修,数控系统电路板维修等。 1 发那科示教器液晶屏不好、花屏、白屏、黑屏、闪屏、竖线、摔破 2 FANUC示教…

[leetcode] 55. 跳跃游戏

文章目录 题目描述解题方法模拟java代码复杂度分析 相似题目 题目描述 给你一个非负整数数组 nums &#xff0c;你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标&#xff0c;如果可以&#xff0c;返回 tr…

Redis中的订阅发布(一)

订阅发布 概述 Redis的发布与订阅功能由PUBLISH、SUBSCRIBE、PSUBSCRIBE等命令组成。通过执行SUBSCRIBER命令&#xff0c;客户端可以订阅一个或多个频道&#xff0c;从而成为这些频道的订阅者(subscribe)&#xff1a; 每当有其他客户端向被订阅的频道发送消息(message)时&…

springboot源码解析(一):启动过程

springboot源码解析(一):启动过程 1、springboot的入口程序 SpringBootApplication public class StartupApplication {public static void main(String[] args) {SpringApplication.run(StartupApplication.class, args);} }当程序开始执行之后&#xff0c;会调用SpringAppli…

蓝桥杯第十五届javab组个人总结

javab组 额今天早上打完了得对自己此次比赛做总结&#xff0c;无论是明年还参赛还是研究生蓝桥杯&#xff0c;体验感有点差&#xff0c;第一题其实一开始想手算但怕进位导致不准确还是让代码跑了&#xff0c;但跑第202420242024个数&#xff08;被20和24整除&#xff09;一直把…

开展在即!中银富登邀您共赴雄安2024数字城市展览会(雄安建博会)

中银富登村镇银行&#xff1a;雄安新区金融创新的领航者 在即将举办的2024雄安数字城市建设展览会上&#xff0c;中银富登村镇银行将以其在金融创新和普惠金融服务领域的卓越表现&#xff0c;成为展会的一大亮点。作为雄安新区首家全国性银行业金融机构总部&#xff0c;中银富…

谈谈微前端

相关问题 为什么要用微前端微前端的优缺点 回答关键点 独立开发 独立运行 独立部署 自治 微前端是一种架构理念&#xff0c;它将较大的前端应用拆分为若干个可以独立交付的前端应用。这样的好处是每个应用大小及复杂度相对可控。在合理拆分应用的前提下&#xff0c;微前端能…

SQL--约束

文章目录 约束约束的分类&#xff1a;按照约束的作用效果不同唯一约束主键约束外键约束检查约束非空约束默认值约束 按照是否跟随列和字段属性来创建约束行级约束表级约束 创建约束创建唯一约束创建完表之后创建唯一约束创建表的同时创建唯一约束行级约束表级约束 约束 CONSTR…

高标准化及可扩展的产品能力,助力声通科技运营效率不断提升

高标准化及可扩展的产品能力对企业发展具有重要意义&#xff0c;有助于企业提高运营效率、增强市场竞争力&#xff0c;并推动企业实现规模化发展。上海声通信息科技股份有限公司&#xff08;下文称&#xff1a;声通科技或公司&#xff09;作为我国领先的企业级全栈交互式人工智…

GIS数据制备,空间分析与高级建模教程

原文链接&#xff1a;GIS数据制备&#xff0c;空间分析与高级建模教程https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247601619&idx6&sn0231cde04d3657377587bd8015faf0e9&chksmfa820c34cdf58522df5a6eb2f44ee60630fd2d1132aa4517928a86591cc602da93aa…

常见的垃圾回收器(下)

文章目录 G1ShenandoahZGC 常见垃圾回收期&#xff08;上&#xff09; G1 参数1&#xff1a; -XX:UseG1GC 打开G1的开关&#xff0c;JDK9之后默认不需要打开 参数2&#xff1a;-XX:MaxGCPauseMillis毫秒值 最大暂停的时间 回收年代和算法 ● 年轻代老年代 ● 复制算法 优点…

测试用例的编写

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 软件测试用例得出软件测试用例的内容&#xff0c;其次&#xff0c;按照软件测试写作方法&#x…

nextjs渲染篇

1 服务器组件 默认情况下&#xff0c;Next.js 使用服务器组件。 1.1 服务器组件是如何呈现的&#xff1f; 在服务器上&#xff0c;Next.js 使用 React 的 API 来编排渲染。渲染工作被拆分为多个块&#xff1a;按单个路段和Suspense 每个区块分两个步骤呈现&#xff1a; Re…

程序中调用DB存储过程记得异常处理时尝试回滚可能存在的事务

程序中调用DB过程要注意这种情况&#xff1a; 有些存储过程需要执行比较久&#xff0c;在数据库中直接跑本身没有出错&#xff0c;但从程序中调用该存储过程会由于超时进入程序异常处理&#xff0c;这时数据库后台依然在跑着该存储过程&#xff0c;如果该存储过程中有启用事务…

选择生产制造项目管理系统?全面解析功能与实际应用!

生产效率和项目规划是制造企业亟需解决的难题&#xff0c;想要从容的应对这些挑战&#xff0c;离不开好用的生产制造项目管理系统。下面我们全面解析什么才能称得上是好用的生产制造项目管理系统。 一、好用的生产制造项目管理系统 什么样的项目管理系统才能算是好用呢&#x…

【Java框架】Spring框架(二)——Spring基本核心(AOP)

目录 面向切面编程AOPAOP的目标&#xff1a;让我们可以“专心做事”专心做事专心做事解决方案1.0专心做事解决方案2.0蓝图 AOP应用场景AOP原理AOP相关术语术语理解 AOP案例实现前置/后置/异常/最终增强的配置实现1.依赖2.业务类3.日志类4.配置切入点表达式匹配规则举例 环绕增强…

【微信小程序】分包

整个小程序所有分包大小不超过 20M&#xff08;开通虚拟支付后的小游戏不超过30M&#xff09; 单个分包/主包大小不能超过 2M在小程序启动时&#xff0c;默认会下载主包并启动主包内页面&#xff0c;当用户进入分包内某个页面时&#xff0c;客户端会把对应分包下载下来&#xf…

13段×5位LED数码管驱动数显驱动IC抗干扰数码屏驱动芯片VK1624 SOP24/DIP24

产品型号&#xff1a;VK1624 产品品牌&#xff1a;永嘉微电/VINKA 封装形式&#xff1a;SOP24/ DIP24 工程服务&#xff0c;技术支持&#xff01; 概述 VK1624是一种数码管或点阵LED驱动控制专用芯片&#xff0c;内部集成有3线串行接口、数据锁存器、LED 驱动等电路。SEG脚…