「贪心算法」最大数

力扣原题链接,点击跳转。

有一个整数数组,我们可以按照任意顺序把这些数拼接成一个新的整数,如2、3和10可以拼接为2310、3102、2103等等。能拼出来的最大整数是多少呢?由于这个数可能非常大,所以结果是一个字符串。

很自然的想法是,把这些数按照某种方式排个序,然后再拼接到一起。假设a和b拼接出来的数是ab或ba,如2和10拼接出来的数是210和102。如果ab>ba,那么就把a放在前面,否则把b放在前面。此时,任意给定两个数a和b,我们都能确定谁先谁后,自然就能对整个数组排序了(其实这个说法不太严谨,因为是否能排序的问题还需要更加严格的证明,感兴趣的读者可以试着证一下)。在对这个数组排完序之后,放在前面更容易拼接成更大数的数,自然都被放在了前面。最后把这个数组的所有数拼接到一起,就是最终结果,这个最终结果一定是能拼出来的最大的数,感兴趣的读者可以试着证明这一点。

根据ab和ba的大小关系确定a和b的先后顺序的过程,就是贪心策略。比较ab和ba的大小,可以先转换为字符串,再比较字符串的字典序。最后还有一个小细节,如果数组里面全都是0,最终拼出来的字符串就是一串0,但是要返回0。

class Solution
{
public:string largestNumber(vector<int>& nums){// 全部转换为字符串int n = nums.size();vector<string> strs;strs.reserve(n);for (auto num : nums)strs.push_back(to_string(num));// 排序,如果ab>ba,就把a放在前面sort(strs.begin(), strs.end(), [](const string& str1, const string& str2){return str1 + str2 > str2 + str1;});// 拼接string ret;for (auto& str : strs)ret += str;return ret[0] == '0' ? "0" : ret;}
};

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

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

相关文章

Linux下的调试器 : gdb指令详解

&#x1fa90;&#x1fa90;&#x1fa90;欢迎来到程序员餐厅&#x1f4ab;&#x1f4ab;&#x1f4ab; 主厨&#xff1a;邪王真眼 主厨的主页&#xff1a;Chef‘s blog 所属专栏&#xff1a;青果大战linux 总有光环在陨落&#xff0c;总有新星在闪烁 gdb是什么 gdn是linu…

开源大模型与闭源大模型,你更看好哪一方?

开源大模型与闭源大模型&#xff0c;你更看好哪一方&#xff1f; 简介&#xff1a;评价一个AI模型“好不好”“有没有发展”&#xff0c;首先就躲不掉“开源”和“闭源”两条发展路径。对于这两条路径&#xff0c;你更看好哪一种呢&#xff1f; 1.方向一&#xff1a;数据隐私 …

springBoot项目中的static和templates文件夹

SpringBoot里面没有我们之前常规web开发的WebContent&#xff08;WebApp&#xff09;&#xff0c;它只有src目录在src/main/resources下面有两个文件夹 static和templates springboot默认 static中放静态页面&#xff0c;而templates中放动态页面。但是webapp文件夹可以有&…

基于webpack+Vue3+JavaScript+antd+less+axios技术栈实现所有组件全局自动化注册

一、前言 最近在做一个项目&#xff0c;因为项目比较小&#xff0c;用户群体年龄跨度较大&#xff0c;同时对兼容性的要求较高&#xff0c;所以选择webpackVue3JavaScriptantdlessaxios的技术栈&#xff0c;在开发的当中发现一个问题&#xff0c;原来在vue2当中&#xff0c;可…

react native 下载功能实现

RN 下载 demo iOS 安装必要的包 react-native-fs 下载使用react-native-permissions 获取权限react-native-share 保存下载的内容到手机 修改 podfile 文件 # Resolve react_native_pods.rb with node to allow for hoisting # require Pod::Executable.execute_command(n…

英伟达的GPU(3)

上节内容&#xff1a;英伟达的GPU(2) (qq.com) 书接上文&#xff0c;上文我们讲到CUDA编程体系和硬件的关系&#xff0c;也留了一个小问题CUDA core以外的矩阵计算能力是咋提供的 本节介绍一下Tensor Core 上节我们介绍了CUDA core&#xff0c;或者一般NPU&#xff0c;CPU执行…

【大数据面试题】31 Flink 有哪些重启方法

一步一个脚印&#xff0c;一天一道面试题 Flink 提供了几种不同的重启方法&#xff1a; 异常自动从 Checkpoint 重启: Checkpoint是Flink的另一种状态快照机制&#xff0c;它比Savepoint更为频繁&#xff0c;提供了细粒度的状态恢复点。通过配置Checkpoint&#xff0c;Flink会…

pyqt QMainWindow菜单栏

pyqt QMainWindow菜单栏 pyqt QMainWindow菜单栏效果代码 pyqt QMainWindow菜单栏 QMainWindow 是 PyQt中的一个核心类&#xff0c;它提供了一个主应用程序窗口&#xff0c;通常包含菜单栏、工具栏、状态栏、中心窗口&#xff08;通常是一个 QWidget 或其子类&#xff09;等。…

头歌OpenGauss数据库-I.复杂查询第4关:计算平均分

本关任务:根据提供的表和数据,查询平均成绩小于60分的同学的学生编号(s_id)、学生姓名(s_name)和平均成绩(avg_score),要求平均成绩保留2位小数点。(注意:包括有成绩的和无成绩的) student表数据: s_ids_names_sex01Mia女02Riley男03Aria女04Lucas女05Oliver男06C…

【数据结构/C语言】深入理解 双向链表

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;数据结构与算法 在阅读本篇文章之前&#xff0c;您可能需要用到这篇关于单链表详细介绍的文章 【数据结构/C语言】深入理解 单链表…

[vue error] vue3中使用同名简写报错 ‘v-bind‘ directives require an attribute value

错误详情 错误信息 ‘v-bind’ directives require an attribute value.eslintvue/valid-v-bind 错误原因 默认情况下&#xff0c;ESLint 将同名缩写视为错误。此外&#xff0c;Volar 扩展可能需要更新以支持 Vue 3.4 中的新语法。 解决方案 更新 Volar 扩展 安装或更新 …

java人口老龄化社区服务与管理平台源码(springboot+vue+mysql)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的人口老龄化社区服务与管理平台。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 人口老龄化…

Elasticsearch的Index sorting 索引预排序会导致索引数据的移动吗?

索引预排序可以确保索引数据按照指定字段的指定顺序进行存储&#xff0c;这样在查询的时候&#xff0c;如果固定使用这个字段进行排序就可以加快查询效率。 我们知道数据写入的过程中&#xff0c;如果需要确保数据有序&#xff0c;可能需要在原数据的基础上插入新的数据&#…

嵌入式进阶——震动马达PWM

&#x1f3ac; 秋野酱&#xff1a;《个人主页》 &#x1f525; 个人专栏:《Java专栏》《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 PWMB的应用实现main.c PWMB的应用 实现不同占空比下的震动的效果 拷贝依赖 STC8H_PWM.hSTC8H_PWM.cNVIC.hNVIC.cSwitch.h 实现m…

vue实现页面渲染时候执行某需求

1. 前言 在之前的项目中&#xff0c;需要实现一个监控token是否过期从而动态刷新token的功能&#xff0c;然而在登录成功后创建的监控器会在浏览器刷新点击或者是通过导航栏输入网址时销毁... 2. 试错 前前后后始过很多方法&#xff0c;在这里就记录一下也许也能为各位读者排…

显式锁的分类

显式锁的分类 显式锁 有很多种&#xff0c;从不同的角度来看&#xff0c;显式锁大概有以下几种分类 可重入锁 和 不可重入锁悲观锁 和 乐观锁共享锁 和 独占锁可中断锁 和 不可中断锁公平锁 和 非公平锁 1.可重入锁&#xff08;Reentrant Lock&#xff09;与不可重入锁 可重入…

js学习第一周

1.变量 1.变量命名规则 严格区分大小写不能以数字开头不能是关键字&#xff0c;保留字&#xff0c;不能用name用作变量名小驼峰命名法命名符号只能用下划线 _ 和doller $并且中间不能有空格 2.类型推断 JavaScript是一种动态类型的语言&#xff0c;这意味着你不需要在声明变…

基于JAVA GUI的JDBC连接数据库

要在Java GUI中连接数据库&#xff0c;需要执行以下几个步骤&#xff1a; 导入必要的包。你需要导入Java数据库连接相关的包&#xff0c;例如java.sql和javax.sql。 与数据库连接相关的类和接口。 &#xff08;1&#xff09;DriverManger类。DriverManager类用于加载JDBD驱动…

【每日力扣】84. 柱状图中最大的矩形 与 295. 数据流的中位数

&#x1f525; 个人主页: 黑洞晓威 &#x1f600;你不必等到非常厉害&#xff0c;才敢开始&#xff0c;你需要开始&#xff0c;才会变的非常厉害 84. 柱状图中最大的矩形 给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;且宽度为…

redis6.2.7 搭建一主多从

1、集群规划 节点端口角色192.168.137.1026379master192.168.137.1026380slave192.168.137.1036381slave 2、伪集群搭建 2.1 创建fake_cluster 目录存放 公共配置文件 # 进入redis目录 cd /app/apps/redis-6.2.7# 创建存放伪集群的目录 mkdir fake_cluster#复制redis.conf到…