算法第二十二天-最大数

最大数

题目要求

解题思路

今天的题目,让我们将一组数字重新组合,构成一个最大的整数。由于构成的整数非常大,所以返回结果需要字符串格式。
分析一下规律:

  • 为了避免用int型或者long型越界,所以我们需要把数字先转换成字符串。然后可以把待比较的两个数字x,y组合成两个新的数字string(x)+string(y)string(y)+string(x),比较一下哪种组合构成的数字更大。

首先**拼接成的两个字符串一定是等长的。**等长的字符串在比较的时候,是按照字符串的各个字符从前向后逐个比较的,所以相当于先比较了百分位,然后比较十分位,最后比较个位。所以在字符串等长的情况下,字符串大,那么对应的整形也更大。但两个不等长的字符串就没有这个结论了。

综上,我们按照下面的步骤:
1.先把nums中的所有数字转字符串,形成字符串数组nums_str
2.比较两个字符串x,y拼接结果x+yy+x哪个更大,从而确定xy谁排在前面,讲nums_str降序排列;
3.把整个数组排序的结果拼接成一个字符串,并返回。

代码

class Solution:def largestNumber(self, nums: List[int]) -> str:from functools import cmp_to_keykey = cmp_to_key(lambda x,y: int(y+x)-int(x+y))res = ''.join(sorted(map(str, nums), key=key)).lstrip('0')return res or '0'
 def bi(i):if i == 0:return 0s = 0k = iwhile i >= 1  :i=i/ 10s+=1return k /( 10 **s -1)
class Solution:def largestNumber(self, nums: List[int]) -> str:nums=sorted(nums,key=bi,reverse=True)if nums[0] == 0:return "0"print(nums)return "".join([str(i) for i in nums])

复杂度分析

时间复杂度: O ( N ∗ l o g ( N ) ) O(N* log(N)) O(Nlog(N))
空间复杂度: O ( N ) O(N) O(N)

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

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

相关文章

用ChatGPT教学、科研!大学与OpenAI合作

亚利桑那州立大学(简称“ASU”)在官网宣布与OpenAI达成技术合作。从2024年2月份开始,为所有学生提供ChatGPT企业版访问权限,主要用于学习、课程作业和学术研究等。 为了帮助学生更好地学习ChatGPT和大语言模型产品,AS…

计算机视觉工程师就业前景如何?

计算机视觉作为一门快速发展的技术领域,其就业前景非常广阔。以下是对计算机视觉就业前景的分析: 市场规模:计算机视觉行业的市场规模正在持续扩大。根据行业分析报告,预计全球计算机视觉市场规模将在2025年达到530亿美元&#xf…

C#,入门教程(35)——哈希表(Hashtable)的基础知识与用法

上一篇: C#,入门教程(34)——关于函数的参数之引用(ref)的一点知识与源程序https://blog.csdn.net/beijinghorn/article/details/125411351 有一段故事: King Log The frogs in the lake had an easy life doing ex…

k8s-helm

Helm: 什么是helm,在没有这个heml之前,deployment service ingress的作用就是通过打包的方式,把deployment service ingress这些打包在一块,一键式的部署服务,类似于yum 官方提供的一个类似于安全仓库的功能,可以实现…

linux docker-compose安装失败解决

1.去github下载到本地 https://github.com/docker/compose/releases/ 2.上传到linux 服务器 mv dokcer-compose-linux-x86_64 /usr/loacal/bin/docker-compose 3.给权限 chmod x /usr/local/bin/docker-compose 4.查看是否安装成功 docker-compose -version 5.卸载 …

074:vue+mapbox 加载here地图(影像瓦片图 v2版)

第074个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+mapbox中加载here地图的影像瓦片图 v2软件版本。 直接复制下面的 vue+mapbox源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源代码(共77行)相关API参考:专栏目标示例效果

持续集成工具Jenkins的使用之安装篇(一)

Jenkins是一个基于Java开发的开源的一种持续集成工具,主要用于环境部署,监控重复性的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成。要想使用它,你就必须的先安装,接下来我们就介绍下J…

有效的数独[中等]

优质博文:IT-BLOG-CN 一、题目 请你判断一个9 x 9的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一…

BGP Local-preferenct 、AS-Path、 Origin 综合选路实验

Local-preference: 本地优先级,公认任意,仅能在 AS 内使用(IBGP内传递),不能在EBGP传递,默认值 100,越大越优。用于离开本 AS ,在 IBGP 的入、出方向都可使用&#xff0c…

C++版QT:电子时钟

digiclock.h #ifndef DIGICLOCK_H #define DIGICLOCK_H ​ #include <QLCDNumber> ​ class DigiClock : public QLCDNumber {Q_OBJECT public:DigiClock(QWidget* parent 0);void mousePressEvent(QMouseEvent*);void mouseMoveEvent(QMouseEvent*); public slots:voi…

微服务Spring Cloud架构详解

"Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具&#xff08;例如配置管理&#xff0c;服务发现&#xff0c;断路器&#xff0c;智能路由&#xff0c;微代理&#xff0c;控制总线&#xff09;。分布式系统的协调导致了样板模式, 使用Spring Cloud开…

在IDEA中使用快捷键让XML注释更加规范

Setting -> Editor -> Code Style -> XML 取消勾选 Line comment at first column 这样我们在使用ctrl / 快速注释时&#xff0c;就可以让注释符号紧贴注释内容&#xff0c;不出现空格。

Fiddler 无法抓包手机 https 报文的解决方案来啦!!

解决手机https无法抓包的问题 当你测试App的时候&#xff0c;想要通过Fiddler/Charles等工具抓包看下https请求的数据情况&#xff0c;发现大部分的App都提示网络异常/无数据等等信息 这时候怎么解决呢&#xff1f; 以软件测试面试提刷题APP为例&#xff1a; Fiddler上的显示…

网络安全基础概念

目录 网络安全背景 网络空间安全 --- Cyberspace 常见的网络安全术语 协议栈自身的脆弱性&#xff1a; 常见安全风险&#xff1a; 物理层--物理攻击 物理设备窃听&#xff1a; 链路层-- MAC洪泛攻击&#xff1a; 链路层--ARP欺骗 网络层--ICMP攻击 传输层--TCP SYN Flood攻击: …

Flutter轮播图Banner

使用插件&#xff1a;flutter_swiper 实现轮播图 pubspec.yaml 增加 &#xff1a;flutter_swiper : ^lastest_version 在项目文件夹下打开命令行执行&#xff1a;flutter packages get 安装插件 home_page.dart中使用swiper 程序运行:先启动虚拟设备后&#xff0c;执行命令f…

基于改进蝙蝠算法的三维航线规划算法

matlab2020a可正常运行 基于改进蝙蝠算法的三维航线规划资源-CSDN文库

SpringBoot - SpringBoot手写模拟SpringBoot启动过程

依赖 建一个工程&#xff0c;两个Module: 1. springboot模块&#xff0c;表示springboot框架的源码实现 2. user包&#xff0c;表示用户业务系统&#xff0c;用来写业务代码来测试我们所模拟出来的SpringBoot 首先&#xff0c;SpringBoot是基于的Spring&#xff0c;所以我…

[陇剑杯 2021]日志分析

[陇剑杯 2021]日志分析 题目做法及思路解析&#xff08;个人分享&#xff09; 问一&#xff1a;单位某应用程序被攻击&#xff0c;请分析日志&#xff0c;进行作答&#xff1a; 网络存在源码泄漏&#xff0c;源码文件名是_____________。(请提交带有文件后缀的文件名&…

基于DUP的网络聊天室

基于UDP的网络聊天室的使用&#xff08;select&#xff09;完成的服务器端 #include<head.h> typedef struct de {char name[10];struct sockaddr_in cin;struct de* next; }*linklist; //创建节点 linklist a_creat() {linklist p(linklist)malloc(sizeof(struct de));…

【好用的AI工具Kimi Chat】帮助提高面试效率

一、背景 年前裁员潮&#xff0c;不少人离职找工作&#xff0c;以及年后金三银四&#xff0c;也是求职高峰期。如何更高效的复习技术知识&#xff0c;以及特别是横纵向比对有总结性的问题。本文以面试【测试开发】的岗位为例&#xff0c;对面试题进行拓展&#xff0c;让AI帮助…