每日leetcode--最大数

正题之前 

三玖yyds!!!

题目

给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。

注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。

示例 1:

输入nums = [10,2]
输出:"210"

示例 2:

输入nums = [3,30,34,5,9]
输出:"9534330"

题目链接:click here 

思路

此题求拼接起来的最大数字。设数组nums 中任意两数字的字符串为 x 和 y,则规定 贪心策略:

若拼接字符串 x+y>y+x,则x“大于”y 。
反之,若 x+y<y+x,则 x“小于” y。
x “小于” y 代表:排序完成后,数组中 x 应在 y 左边;“大于” 则反之。

根据以上规则,套用排序方法对 nums 执行排序即可。

详细题解:. - 力扣(LeetCode)

python代码

class Solution:def largestNumber(self, nums: List[int]) -> str:# 自定义比较函数def _myfunc(a,b):return int(str(a)+str(b))-int(str(b)+str(a))# nums按照自定义函数排序nums.sort(key=cmp_to_key(_myfunc), reverse=True)# 拼接为字符串ans=""for i in nums:ans+=str(i)# 防止ans中元素均为"0"if ans[0]=='0':return '0'return ans

这段代码定义了一个Solution类,其中包含一个名为largestNumber的方法。该方法接受一个整数列表nums作为输入,并返回一个字符串。在方法中,我们首先定义了自定义的比较函数_myfunc,然后使用该函数对nums进行排序。最后,我们将排序后的数字拼接成一个字符串,并检查第一个字符是否为0,如果是,则返回"0",否则返回拼接后的字符串。

这种方法非常巧妙地利用了Python的内置排序函数和自定义比较函数,以及对字符串和整数的转换操作,来解决了一个看似复杂的问题

注意事项

  • sort中用到的排序函数不可用lambda定义,因为lambda定义的函数只能接受一个参数,所以只能def定义一个比较函数,再用functools.cmp_to_key将def定义的比较函数转为关键字函数,之后传给sort中的key
  • 当ans中都是‘0’时,只能返回一个‘0’

结语

希望这篇博客能够帮助你更好地理解Python中的排序和比较函数,并激发你对算法和数据结构的兴趣。如果你有任何疑问或建议,欢迎在评论区留言,让我们一起讨论!

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

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

相关文章

篮球游戏中的挑战精神与怄气心理:扣篮被帽后的再度冲击

在篮球比赛中&#xff0c;扣篮无疑是最具观赏性和震撼力的动作之一&#xff0c;它展示了球员的爆发力、技巧和自信。而在篮球游戏中&#xff0c;玩家即便面临连续扣篮被盖帽的挫折&#xff0c;仍渴望继续杀入内线尝试扣篮的现象&#xff0c;实则是体育竞技精神、挑战意识与怄气…

梵宁教育:警惕网络诈骗,守护青春未来

随着互联网的普及和科技的飞速发展&#xff0c;网络已经深入到了我们生活的方方面面&#xff0c;为大学生提供了前所未有的便利与机遇。然而&#xff0c;与此同时&#xff0c;网络诈骗也悄然滋生&#xff0c;成为威胁大学生安全的一大隐患。梵宁教育在此郑重提醒广大大学生&…

LeetCode 热题100 刷题笔记

一&#xff1a;哈希表 一般哈希表都是用来快速判断一个元素是否出现集合里。 直白来讲其实数组就是一张哈希表&#xff0c;哈希表中关键码就是数组的索引下标&#xff0c;然后通过下标直接访问数组中的元素。 1.两数之和 题目链接&#xff1a;. - 力扣&#xff08;LeetCode…

Javaweb之SpringBootWeb案例之自动配置的原理分析的详细解析

3.2.3 原理分析 3.2.3.1 源码跟踪 前面我们讲解了在项目当中引入第三方依赖之后&#xff0c;如何加载第三方依赖中定义好的bean对象以及配置类&#xff0c;从而完成自动配置操作。那下面我们通过源码跟踪的形式来剖析下SpringBoot底层到底是如何完成自动配置的。 源码跟踪技巧…

[VSCode插件] 轻量级静态博客 - MDBlog

MDBlog VSCode插件&#xff0c;基于Markdown的轻量级静态博客系统&#xff0c;同时支持导出为可以部署的静态博客。 仓库 MDBlog 1. Features 博客基础功能&#xff1a;分类管理、文章管理、自动生成索引快捷指令&#xff1a;快捷输入表格、mermaid、wavedrom、代码块发布&a…

[electron杂项] 记录学习electron碰到问题(持续更新)

无法生成 node_modules文件夹 如前面所说的&#xff0c;如果要用vscode的代码补全&#xff0c;那么就要把 electron.d.ts文件拷贝到项目的 node_modules文件夹下。一般情况下是通过npm install生成 node_modules 文件夹。但是有时发现根本生成不了生成了一个 xxxxlock的文件。…

Redis--内存回收机制详解

什么是内存回收机制? 众所周知Redis之所以性能高是因为数据都存在内存中&#xff0c;内存是很宝贵的&#xff0c;Redis的内存回收机制本质就是处理达到过期时间的key-value&#xff0c;以及当内存到达最大使用值时候触发的内存淘汰策略。 Redis数据删除的策略有哪些&#xf…

软考重点题解析-基础知识

1.加密技术&#xff1a;分为对称加密技术&#xff1a;文件的加密和解密使用相同的密钥 和 非对称加密技术&#xff1a;加密和解密不同的密钥&#xff0c;分别是公开密钥和私有密钥。 例题&#xff1a;若A,B两人分别在认证机构&#xff08;CA&#xff09;M,N处获得证书&…

项目准备March

Nginx主要用来作为Http服务器&#xff0c;要实现Tomcat的负载均衡&#xff0c;就可以通过Nginx来实现。 正向代理代理的是客户端&#xff0c;反向代理代理的是服务端。SpringBoot采用约定优于配置的思想&#xff0c;简化Spring项目的配置开发。 前端请求其实并未直接发送到后…

php连接hdfs初步探索

一、phdfs拓展 结果&#xff1a;暂时舍弃 安装此拓展时&#xff0c;无法make成功&#xff0c;因为缺少hdfs.n文件。 换了其他版本的拓展包&#xff0c;并编译都没有找到此文件。 后搜到官网的相关资料&#xff0c;此hdfs.h的文件路径的地址是$HADOOP_HDFS_HOME/include/hdfs…

数据增加

目录 增加数据 实现数据增加&#xff0c;保存新的内容 注意 Oracle从入门到总裁:https://blog.csdn.net/weixin_67859959/article/details/135209645 增加数据 由于 emp 表中的数据对日后的开发依然有用处&#xff0c;所以在讲解更新之前 建议将emp 表数据做一个复制。将…

linux如何查看磁盘占用情况

要查看Linux系统中磁盘的占用情况&#xff0c;可以使用一些命令来获取相关信息。以下是一些常用的命令&#xff1a; df命令&#xff1a; df命令用于显示文件系统的磁盘空间使用情况&#xff0c;包括磁盘分区的总空间、已用空间、可用空间等信息。 df -h使用 -h 参数可以以人类可…

Golang 简介与基本语法学习

Go&#xff0c;也被称为 Golang&#xff0c;是一门由 Google 设计的开源编程语言。它旨在提供高效的开发体验&#xff0c;同时具备并发性、内存安全和简洁性。本篇博客将介绍 Golang 的基本语法和一些示例&#xff0c;帮助读者快速入门这门令人着迷的语言。 简介 Go 语言的设…

一个脚本两步计算材料Raman谱(附数据处理和绘图脚本)

在以往推送中已经介绍了相当多的计算材料Raman的方法&#xff0c;使用的软件主要为Phonopy-Spectroscopy&#xff0c;相关软件还有vasp&#xff0c;phonopy&#xff0c;phono3py等。 Phonopy-Spectroscopy计算材料红外和Raman光谱 Phonopy-Spectroscopy 计算红外和拉曼光谱 也…

经典面试题从浏览器输入URL到页面加载的过程?

从输入URL到页面加载的过程涉及多个步骤&#xff0c;包括DNS解析、TCP连接、发送HTTP请求、服务器处理请求、浏览器解析渲染页面以及断开连接。具体如下&#xff1a; DNS解析&#xff1a;当你在浏览器中输入一个URL时&#xff0c;浏览器首先需要将域名转换为IP地址。这个过程称…

QT中提升为自定义控件的方法

一&#xff0e;介绍 提升为自定义的控件用法&#xff1a;先要写好自定义控件后&#xff0c;再添加&#xff0c;在频繁使用同一控件时&#xff0c;的确非常的高效。 同时导入别人开发的控件操作方法也类似。 二&#xff0e;下面以自定义的QPushButton作一个很简单的例子&#x…

MongoDB聚合运算符:$bottomN

$bottomN聚合运算符返回分组中指定顺序的最后n个元素&#xff0c;如果分组中的元素数量小于n&#xff0c;则返回分组的全部元素。从MongoDB5.2开始支持。 语法 {$bottomN:{n: <expression>,sortBy: { <field1>: <sort order>, <field2>: <sort or…

精品SSM的教学管理系统课程作业成绩

《[含文档PPT源码等]精品基于SSM的教学管理系统[包运行成功]》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功&#xff01; 软件开发环境及开发工具&#xff1a; Java——涉及技术&#xff1a; 前端使用技术&#xff1a;HTML5,CSS3、Jav…

esp32 C3和S3 开发板电流对比

出去好奇用合宙家的 lot power 测了两块开发板的运行电流。 esp32 S3 (嘉立创开发板 8N8 版本) 模式 电流downloa模式49 毫安空代码91 毫安light mode27 毫安deep mode25 毫安delay 40 毫安 esp32 C3 无串口芯片 &#xff08;合宙 9.9 元版本&#xff09; 模式 …

uniapp npx update-browserslist-db@lates 问题解决

在uniapp运行项目时&#xff0c;会有这种报错&#xff0c;其实这是表明browserslistlatest版本低了&#xff0c;在催你升级版本&#xff0c;browserslistlatest是用来支持解析css用的&#xff0c;当然&#xff0c;你也可以直接忽略这个报错提示&#xff0c;也可以正常运行项目。…