【算法一则】【贪心】数组中的数可以拼装成的最大数

题目

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

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

示例 1:

输入:nums = [10,2]
输出:"210"
示例 2:输入:nums = [3,30,34,5,9]
输出:"9534330"
提示:1 <= nums.length <= 100
0 <= nums[i] <= 109

题解

import java.util.List;//leetcode submit region begin(Prohibit modification and deletion)
class Solution {public String largestNumber(int[] nums) {// 创建一个List集合来存储数组中的数字List<String> collect = new ArrayList<>();for (int num : nums) {// 将数组中的每个数字转换为字符串并添加到集合中collect.add(String.valueOf(num));}// 调用pickMaximumNumber方法找到能够组成的最大数字String pickMaximumNumber = pickMaximumNumber(collect);// 如果最大数字的第一个字符是0,则返回"0",否则返回最大数字if (pickMaximumNumber.charAt(0) == '0') {return "0";}return pickMaximumNumber;}// 找到能够组成的最大数字的方法public String pickMaximumNumber(List<String> list) {// 使用自定义的比较器对集合中的数字进行排序list.sort((o1, o2) -> {String s1 = o1 + o2;String s2 = o2 + o1;// 将两个数字组合后进行比较,返回比较结果return s2.compareTo(s1);});// 将排序后的数字拼接成一个字符串并返回return String.join("", list);}
}

在这里插入图片描述

题目要求找到给定整数数组中能够组成的最大数字。我们可以通过将数组中的数字转换为字符串,并进行排序来实现。

  1. 首先,我们创建一个List集合来存储数组中的数字。然后,使用一个循环遍历整数数组,将每个数字转换为字符串,并将其添加到集合中。

  2. 接下来,我们调用一个自定义的方法pickMaximumNumber来找到能够组成的最大数字。这个方法接受一个List参数,表示存储数字的集合。

  3. pickMaximumNumber方法中,我们使用集合的sort方法,并传入一个自定义的比较器。比较器的逻辑是将两个数字组合起来,然后比较它们的大小。具体而言,我们将两个数字分别拼接成两个字符串s1s2,然后比较s2s1的大小。这样做的目的是为了确保组合后的数字能够得到最大的排序结果。

  4. 排序完成后,我们将排序后的数字通过String.join方法拼接成一个字符串,并将其作为方法的返回值。

  5. 回到largestNumber方法,在调用pickMaximumNumber方法后,我们检查最大数字的第一个字符是否为0。如果是0,说明最大数字是以0开头的,那么无论后面的数字如何,它们都不会改变最大数字的值,因此我们直接返回字符串"0"。如果最大数字的第一个字符不是0,我们就返回最大数字。

这样,我们就得到了给定整数数组中能够组成的最大数字。

总结起来,这段代码的思路是将整数数组转换为字符串,并使用自定义的比较器对字符串进行排序,从而找到能够组成的最大数字。最后,根据题目要求进行处理并返回结果。

在这里插入图片描述

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

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

相关文章

【UnityRPG游戏制作】RPG项目的背包系统商城系统和BOSS大界面

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;Uni…

二分查找-在排序数组中查找元素的第一个和最后一个位置

给你一个按照非递减顺序排列的整数数组 nums&#xff0c;和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target&#xff0c;返回 [-1, -1]。 你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。 示例 输入&#xf…

程序链接步骤2:重定位

一、链接步骤 链接步骤1“符号解析”&#xff1a; 将符号引用和符号定义建立关联后&#xff1b; 链接步骤2“重定位”&#xff1a; 将引用符号的地址“重定位”为相关联的符号定义的地址。 二、原文链接&#xff1a;https://www.jianshu.com/p/7d13ec4735ba 符号解析完成后&…

ZooKeeper 搭建详细步骤之二(伪集群模式)

ZooKeeper 搭建详细步骤之一&#xff08;单机模式&#xff09; ZooKeeper 及相关概念简介 伪集群搭建 ZooKeeper 伪集群是指在一个单一的物理或虚拟机环境中模拟出一个由多个 ZooKeeper 节点构成的集群。尽管这些节点实际上运行在同一台机器上&#xff0c;但它们通过配置不同的…

字节秋招高频算法汇总(高级篇)

更多大厂面试内容可见 -> http://11come.cn 字节秋招高频算法汇总 接下来讲一下 字节秋招 中的高频算法题&#xff0c;分为三个部分&#xff1a; 基础篇 、 中级篇 、 进阶篇 目的就是为了应对秋招中的算法题&#xff0c;其实过算法题的诀窍就在于 理解的基础上 背会 看…

【ARMv9 DSU-120 系列 5 -- CHI Interface】

请阅读【Arm DynamIQ™ Shared Unit-120 专栏 】 文章目录 DSU-120 CHI BUSAddress Target Groups配置步骤映射和管理Hashing for CHI transaction distribution散列过程和地址目标组识别散列函数定义两个地址目标组的散列四个地址目标组的散列八个地址目标组的散列架构框图

与Apollo共创生态:我和Apollo七周年大会的心路历程

一、写在前面 前几天观看了Apollo七周年大会&#xff0c;给我带来了超多的惊喜&#xff0c;博主想将这份惊喜分享给大家&#xff01; 二、Apollo开放平台 Apollo开放平台秉承其核心理念——开放能力、共享资源、加速创新、持续共赢&#xff0c;致力于推动自动驾驶技术的革新…

《HCIP-openEuler实验指导手册》1.2Apache主页面配置

一、配置服务器监听IP及端口 注释主配置文件“监听IP及端口”部分 cd /etc/httpd/conf cp httpd.conf httpd.conf.bak vim httpd.conf可以在普通模式下搜索Listen关键字 :/Listen按n键继续向后搜索 在/etc/httpd/conf.d中新建子配置文件port.conf&#xff1a; touch /etc…

新质生产力的内涵

新质生产力是以科技创新为先导&#xff0c;摆脱传统增长路径、符合高质量发展要求的生产力跃迁新形态&#xff0c;是数字时代更具有融合性、更体现新内涵的生产力组合。如果说传统生产力是人类已经掌握并正在使用的生产力&#xff0c;那么&#xff0c;新质生产力就是以大数据、…

Linux系统及工具的使用

​ Linux的版本系列与划分: Redhat与Debian系介绍(Linux各种发行版本概述)_酷炫人笨笨熊-CSDN博客_redhat和debian的区别 ubuntu下 1.打开 .bashrc文件&#xff0c; 在最后面添加下面一句话 Ubuntu 22.04下安装配置rime五笔输入法_ubuntu 22.04 五笔_繁星间漫步的博客-CSDN博客…

观成科技:蔓灵花组织加密通信研究分析总结

1.概述 蔓灵花&#xff0c;又名"Bitter"&#xff0c;常对南亚周边及孟加拉湾海域的相关国家发起网络攻击&#xff0c;主要针对巴基斯坦和中国两国。其攻击目标主要包括政府部门、核工业、能源、国防、军工、船舶工业、航空工业以及海运等行业&#xff0c;其主要意图…

笔记:Python 注释(练习题)

文章目录 前言一、Python 注释是什么&#xff1f;二、选择题二、填空题三、编程题总结 前言 欢迎来到Python注释练习&#xff01;在这个练习中&#xff0c;我们将探讨Python中注释的重要性和使用方法。注释在代码中扮演着关键的角色&#xff0c;不仅可以提高代码的可读性&…

火绒安全:全面守护你的数字世界

火绒安全&#xff1a;全面守护你的数字世界 在数字化时代的浪潮中&#xff0c;我们的电脑和生活已经紧密相连。然而&#xff0c;网络安全问题也如影随形&#xff0c;恶意软件、病毒、间谍软件等安全威胁层出不穷。作为一名国际著名的病毒程序软件专家&#xff0c;我深知一款高…

AI未来——从萌芽到智能新纪元

按照人工智能的发展阶段&#xff0c;具体的里程碑事件和细节: 人工智能的萌芽期(1940年代-1950年代) 1943年,麦卡洛克和皮茨发表题为《A Logical Calculus of Ideas Immanent in Nervous Activity》的论文,首次提出人工神经网络概念1950年,图灵在《计算机器与智能》一文中提出…

后端每日一题 2:DNS 解析过程

本文首发于公众号&#xff1a;腐烂的橘子 本文梗概&#xff1a; DNS 是什么&#xff0c;有什么作用一条 DNS 记录是什么样的DNS 域名解析原理DNS 服务器如何抵御攻击 DNS 是什么&#xff0c;有什么作用 DNS&#xff08;Domain Name System&#xff09;是一种应用层协议&…

JS高级 -- 数据类型

1. 分类 基本(值)类型 String&#xff1a;任意字符串Number&#xff1a;任意的数字Boolean&#xff1a;true / falseundefined&#xff1a;undefinednull&#xff1a;null 对象(引用)类型 Object&#xff1a;任意对象Function&#xff1a;一种特别的对象(可以执行)Array&am…

解决 Oracle 表锁

程序更新大量数据的时候, 由于时间太长, 页面刷新又重新提交了一次, 结果后续的任何变动都直接卡住, 一开始以为是代码问题, 使用 jstack 命令导出了当前堆栈, 结果发现有重复的语句卡在 update 上了, 看 sql 语句, 发现就是正常的 update, 那问题大概率就是出在表被锁身上了. …

使用和配置:超秀的 MySQL 客户端工具 MyCli

1.安装一个更人性化的一个mysql客户端、终端: sudo apt install mycli 登录方式 mycli -uroot password 2. 功能&#xff1a;界面更好看&#xff0c;且支持自动补全&#xff0c;按tab可以补全 3.mycli使用帮助说明文档 mycli --help用法: mycli [OPTIONS] [DATABASE]例如:…

西门子程序专业备份软件BUDdy for S7和使用说明

西门子程序专业备份软件BUDdy for S7和使用说明

如何在Django中使用Ajax进行动态数据更新?

在Django中使用Ajax进行动态数据更新需要以下步骤&#xff1a; 在前端页面中引入jQuery库。 <script src"https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>创建一个处理Ajax请求的视图函数。 from django.http import Json…