45_剑指offer_java_把数组排成最小的数

保姆级教程:用YOLOv8/9/10搞定仪表盘指针识别,附完整数据集和Python环境配置 本文提供了一份基于YOLOv8/v9/v10的仪表盘指针检测全流程指南,涵盖环境配置、数据集构建、模型选型、训练调优和部署落地等关键步骤。通过详细的代码示例和实战经验,帮助开发者高效解决工业视觉中的仪表盘检测难题,特别适合电力巡检、智能监控等应用场景。 阅读详情

目录

题目描述

测试用例

题目考点

解题思路

自己解题

参考解题


题目描述

输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组 {3,32,321},则打印出这三个数字能排成的最小数字为 321323。

 

测试用例

  • 功能测试(输入的数组中有多个数字;输入的素组中的数字有重复的数位;输入的数组中只有一个数字)
  • 特殊输入测试(输入数组的指针为空指针)

 

题目考点

  • 本题有两个难点:第一个难点是相处一种新的比较规则来排序一个数组;第二个难点是证明这个比较规则是有效的,并且证明根据这个规则排序之后,把数组中所有数字拼接起来得到的拼接起来得到的数字是最小的。这需要很强的数学功底和逻辑思维能力。
  • 考察应聘者解决大数问题的能力。应聘者在面试的时候要意识到,把两个int型的整数拼接起来得到的数字可能会超过int型数字能够表达的范围,从而导致数字溢出。我们可以用字符串表示数字,这样就能简洁地解决大数问题。

 

解题思路

可以看成是一个排序问题,在比较两个字符串 S1 和 S2 的大小时,应该比较的是 S1+S2 和 S2+S1 的大小,如果 S1+S2 < S2+S1,那么应该把 S1 排在前面,否则应该把 S2 排在前面。

证明参考《剑指Offer》

 

自己解题

全排列N!,No,So,大写的不会!!

 

参考解题

import java.util.ArrayList;
import java.util.Arrays;

public class Solution {
    // 把数组排成最小的数
    
    public String PrintMinNumber(int [] numbers) {
        // 异常
        if(numbers == null || numbers.length == 0){
            return "";
        }
        
        // 解决大数问题: 以防两个数相加溢出,将int变成string
        String[] numberStrings = new String[numbers.length];
        for(int i = 0; i < numbers.length; ++i){
            numberStrings[i] = numbers[i] + ""; // 这是啥原理啊?
        }
        
        // 利用新的排序规则排序, 啥原理啊???
        Arrays.sort(numberStrings, (s1, s2) -> (s1 + s2).compareTo(s2 + s1));
        // sort(T[] a, Comparator<? super T> c) 根据指定的比较器引发的顺序对指定的对象数组进行排序。
        
        StringBuilder result = new StringBuilder();
        
        for(String s : numberStrings){
            result.append(s);
        }
        
        return result.toString();
    }
}

 

Android WIFI体系:深入解析WifiLock与MulticastLock的底层实现与性能优化 本文深入解析Android WIFI体系中WifiLock与MulticastLock的底层实现机制与性能优化策略。WifiLock通过阻止Wi-Fi休眠提升网络性能,尤其WIFI_MODE_FULL_HIGH_PERF模式可显著降低延迟;MulticastLock则控制组播数据接收,但会增加功耗。文章详细探讨了其与wpa_supplicant、HAL层的交互,并提供高性能场景下的优化实践与功耗平衡方案。 阅读详情

相关推荐

转录组测序(RNA-seq)的数据如何分析?

经过富集分析后,我们就可以从富集到的GO term或者Pathway中寻找关键基因,通过一个GO term和Pathway里面的基因往往小于100个,至此我们就又将上千条基因的范围缩小到了100条以内。对GO term或者Pathway里面的基因进行范围的缩小也有两个方法,一种方法是根据基因的注释或者文献来找到GO term或者Pathway里面的关键基因(2-3个),另一种方法需要有相应的表型数据,与GO term或者Pathway里面基因进行相关性分析,找出与表型高度相关的基因。

weixin_55372631的博客 1万+

LeetCode 把数组排成最小的数

输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。 示例 1: 输入: [10,2] 输出: “102” 示例 2: 输入: [3,30,34,5,9] 输出: “3033459” 提示: 0 < nums.length <= 100 说明: 输出结果可能非常大,所以你需要返回一个字符串而不是整数 拼接起来的数字可能会有前导 0,最后结果不需要去掉前导 0 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/probl

奋斗的龙猫的博客 649

高效静音黑科技 —— 单相直流无刷电机驱动器

然而,传统的BLDC电机驱动通常依赖于三相架构,电路复杂,成本高昂,且在低功率应用中显得有些“大材小用”。单相直流无刷电机驱动器作为一项高效、静音、经济的技术,正逐渐改变着各个领域的电机驱动方式。其精巧的控制策略、显著的优势以及广阔的应用前景,都预示着这项技术将在未来扮演越来越重要的角色。它相较于传统的三相驱动,显著简化了电路结构,降低了成本,尤其适用于低功率、对静音要求极高的应用场景。通过这些模块的协同工作,单相直流无刷电机驱动器能够实现对电机速度、扭矩的精确控制,并最大程度地降低噪声和振动。

wen8789的博客 1764

【剑指offer第45题】把数组排成最小的数(java实现)

把数组排成最小的数字典排序代码实现总结 字典排序 输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。 示例: 输入: [10,2] 输出: “102” 输入: [3,30,34,5,9] 输出: “3033459” 首先组合成字符串题型,最好开始就把数字转化为字符串,这样避免数字相加后越界,而且使用StringBuffer类,字符串是可变的,还是线程安全的。 数字组合成字符串,还涉及到大小,这里就要排序。而且观察到,第一位数字越小,就应该排在前面。那么这样就可以确

weixin_39296608的博客 533

STM32与FreeRTOS:基于TIM6的高精度系统时间获取实践

本文详细介绍了在STM32与FreeRTOS环境下,基于TIM6定时器实现高精度系统时间获取的实践方法。通过复用FreeRTOS的TIM6硬件资源,开发者可以高效获取毫秒级和微秒级系统时间,同时解决时间溢出和中断处理等关键问题。文章还提供了CubeMX配置技巧、代码实现及性能优化建议,适用于嵌入式系统开发中的精确时间管理需求。

weixin_29169505的博客 357

使用 MATLAB/Simulink 对风光互补发电系统进行建模

随着全球对清洁能源的需求日益增长,风力发电和光伏发电作为两种主要的可再生能源形式,在电力供应中的占比越来越高。然而,由于风电和光伏的间歇性和不确定性,单独依赖其中任何一种能源都会给电网带来挑战。因此,风光互补发电系统(Wind-PV Hybrid System)应运而生,通过合理配置风力发电机和光伏电池板的数量,可以有效提高系统的稳定性和可靠性。此外,为了确保整个电力系统的安全稳定运行,还需要研究风光互补发电系统与主网之间的协调调度策略。本教程将详细介绍如何使用。

amy_mhd的博客 118

剑指Offer45数组——把数组排成最小的数

题目: 输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。 示例 1: 输入: [10,2] 输出: “102” 示例 2: 输入: [3,30,34,5,9] 输出: “3033459” 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/ba-shu-zu-pai-cheng-zui-xiao-de-shu-lcof 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 分析: 字符串拼接

weixin_45996005的博客 295

使用 Python 爬取网易云音乐歌单数据(完整教程)

随着在线音乐平台的普及,网易云音乐(NetEase Cloud Music)凭借其个性化的推荐算法和丰富的用户互动,吸引了大量用户。网易云音乐的歌单中包含了丰富的音乐数据,包括歌曲名、歌手、专辑、播放量、评论数等信息。通过爬取这些数据,可以对音乐流行趋势进行分析,挖掘音乐推荐策略,甚至训练个性化推荐模型。网易云音乐的 API 并未官方开放,但开发者通过抓包和逆向分析,找到了若干可用接口。✅ 数据清洗与存储(CSV/数据库)✅ 网易云音乐 API 接口分析。✅ 网易云音乐接口解析。✅ 同步与异步爬取实现。

2201_76125261的博客 1373

力扣LeetCode经典算法 把数组排成最小的数

输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。

胡乱写点什么 794

【逐函数讲解ORB_SLAM3源码】获取普通帧率、关键帧、IMU数据

获得imu的旋转 mRwc * mImuCalib.mTcb.rotationMatrix(); Sophus::SE3 mTwc 创建ORB_SLAM3系统 Create SLAM system. It initializes all system threads and gets ready to process frames. ORB_SLAM3::System SLAM(argv[1],argv[2],ORB_SLAM3::System::IMU_RGBD, true, 0, file_nam

小秋 AI SLAM 入门实战教程 1245

DP83869HM的LWIP性能测试

E:/Xilinx/Vitis/2021.1/data/embeddedsw/ThirdParty/sw_services/lwip211_v2_0/src/contrib/ports/xilinx/netif/xemacpsif_physpeed.c文件中的。然后phy_setup_emacps中调用get_IEEE_phy_speed函数,根据PHY的ID判断出Marvell或TI或Realtek的PHY,调用对应的网速自动协商函数get_TI_phy_speed,该函数中的部分配置需要注释。

FPGA艺术家的博客 356

【贪心】牛客网:把数组排成最小的数

输入一个非负整数数组numbers,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。 例如输入数组[3,32,321],则打印出这三个数字能排成的最小数字为321323。 1.输出结果可能非常大,所以你需要返回一个字符串而不是整数 2.拼接起来的数字可能会有前导 0,最后结果不需要去掉前导 0 1、先将整型数组转化为字符串型数组 2、定义特定排序规则 3、用定义的排序规则对字符串型数组进行排序 4、将字符串型数组中每个元素拼接起来 5、得到最小的数 ..

_ 2111

prplOS适配USB LAN网卡

本文介绍了将USB LAN网卡(如rndis0)适配到prplOS的LAN管理流程。

四儿家的小祖宗的博客 322

剑指 Offer 45. 把数组排成最小的数 【java详细题解】

剑指 Offer 45. 把数组排成最小的数 1. 题目 输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。 示例 1: 输入: [10,2] 输出: "102" 示例 2: 输入: [3,30,34,5,9] 输出: "3033459" 提示: 0 < nums.length <= 100 说明: 输出结果可能非常大,所以你需要返回一个字符串而不是整数 拼接起来的数字可能会有前导 0,最后结果不需要去掉前导 0 2.思路 这是一道排序题,

双双博客 399

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

剑指offer面试题45(java版):把数组排成最小的数

welcome to my blog 剑指offer面试题45(java版):把数组排成最小的数 题目描述 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 思路 需要额外考虑的一个问题:m和n都在int型能表达的范围内,但它们拼接起来的数字mn和nm用int型表示就有...

littlehaes的博客 809

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

把数组排成最小的数 java_【Java】 剑指offer(45) 把数组排成最小的数

本文参考自《剑指offer》一书,代码采用Java语言。题目输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3, 32, 321},则打印出这3个数字能排成的最小数字321323。思路不好的方法:求出所有全排列(类似字符串的排列),将数字拼起来,最后求出所有的最小值。这效率太低,且没有考虑到大数问题。好的方法:观察规律,自行定义一种排序规...

weixin_39734184的博客 111

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Java详解剑指offer面试题45--把数组排成最小的数

Java详解剑指offer面试题45–把数组排成最小的数 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 这道题可以对数组排序,比如对于普通的数组{23, 12, 32},可能会想到按照自然序排序后,得到{12, 23, 32}然后直接拼接起来就得到了最小的数字122332,但是像题中的例子按照自然序排好后就是{3, 32, 321},如果直接拼接得到332321,是不是最

快乐李同学的博客 571

[剑指 offer]45 把数组排成最小的数 Java实现

题目 输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。 示例 1: 输入: [10,2] 输出: “102” 示例 2: 输入: [3,30,34,5,9] 输出: “3033459” 提示: 0 < nums.length <= 100 说明: 输出结果可能非常大,所以你需要返回一个字符串而不是整数 拼接起来的数字可能会有前导 0,最后结果不需要去掉前导 0 代码 在看具体的思路之前我们可以先来看看String嘞类中compareTo的用法~ 以.

BedivereAlter的博客 218

剑指offer—45.把数组排成最小的数—分析及代码(Java)

剑指offer——45.把数组排成最小的数——分析及代码[Java]一、题目二、分析及代码1. 字符串排序(1)思路(2)代码(3)结果三、其他 一、题目 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 二、分析及代码 1. 字符串排序 (1)思路 可以设计一种排序规则,对 a、b 两个数,若拼接后 ab > ba,则认为 a > b。这种排序规则可以证明满足自反性、

江南土豆的博客 147

剑指Offer 面试题45. 把数组排成最小的数(Java代码)

数字转换成字符串,字符串比较的方式 (A+B).compareTo(B+A)

r'q'x't 的博客 221

剑指offer45_把数组排成最小的数(java)

面试题45. 把数组排成最小的数 思路: by jyd 此题求拼接起来的 “最小数字” ,本质上是一个排序问题。 排序判断规则: 设数组中任意两个数字的字符串格式为 x和 y ,则 若拼接字符串 x + y > y + x,则 x > y; 反之,若 x + y < y + x ,则 x < y; 算法流程: 初始化: 字符串列表 strsstrs ,保存各数字的字符串格式; 列表排序: 应用以上 “排序判断规则” ,对 strs 执行排序; 返回值: 拼接 str

yyxyuxueYang的博客 197

剑指 Offer 45. 把数组排成最小的数java题解

class Solution { public String minNumber(int[] nums) { String[] str=new String[nums.length]; for(int i=0;i<nums.length;i++){ str[i]=String.valueOf(nums[i]); } mysort(str,0,str.length-1); StringBuil

乾坤未定,你我皆是黑马 188

剑指offer(Java实现)45 - 把数组排成最小的数

把数组排成最小的数-45 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。 例如输入数组[3, 32, 321],则打印出这3个数字能排成的最小数字321323。 样例 输入:[3, 32, 321] 输出:321323 注意:输出数字的格式为字符串 思路: 对于数字m和n,可以拼接成mn和nm,如果mn<nm,我们定义m小于n。反之则相反。利用...

rookie_0821的博客 119

剑指offer面试题45:把数组排成最小的数(Java 实现)

题目:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 测试用例: 功能测试:输入的数组只有一个数字或者有多个数字;输入的数组中数字有重复的位数。 负面测试:输入的数组为空。 思路: 首先要注意这是一个大数问题,两个 int 类型的数字拼接起来可能会溢出,需要把它...

weixin_41163113的博客 389

剑指offer 面试题45:把数组排成最小的数(java)

输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。 示例 输入: [3,30,34,5,9] 输出: "3033459" 思路 最直接的方法就是暴力法,对数组中的数据进行全排列,然后拼接起来,找出拼接的数字的最小值,时间复杂度是O(n!) 考虑更优的方法 我们可以设置一个排序规则,数组根据这个规则排序之后能排成一个最小的数字 如何制定排序规则呢? 比较两个数字m和n时,需要判断m和n哪个应该排在前面 m和n能拼接成mn和nm 如果mn<nm,按照题目要求

Peanut的博客 387

[算法练习及思路-leetcode剑指offer(Java解法)]No45.把数组排成最小的数

题号:剑指 Offer 45 题目名:把数组排成最小的数 原题URL:https://leetcode-cn.com/problems/ba-shu-zu-pai-cheng-zui-xiao-de-shu-lcof/ 题目描述 输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。 示例 示例 1: 输入: [10,2] 输出: "102" 示例 2: 输入: [3,30,34,5,9] 输出: "3033459" 限制 0 < nums.lengt

叶落雨飘的博客 220
上一篇: PBFT算法_持续更新
下一篇: 46_剑指offer_java_把数字翻译成字符串
Longtermevolution
博客等级 码龄9年 113粉丝 249原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值