剑指 Offer 45:把数组排成最小的数

简介: 剑指 Offer 45:把数组排成最小的数

题目

题目链接

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

示例 1:

输入: [10,2]
输出: "102"

示例 2:

输入: [3,30,34,5,9]
输出: "3033459"

解题

方法一:使用内置排序

参考链接

class Solution {
public:
    static bool cmp(string& a,string& b){
        return a+b<b+a;
    }
    string minNumber(vector<int>& nums) {
        //将元素转为string
        vector<string> strs;
        for(int num:nums) strs.push_back(to_string(num));
        //排序
        sort(strs.begin(),strs.end(),cmp);
        //输出结果
        string res;
        for(string str:strs) res+=str;
        return res;
    }
};

方法二:快排

class Solution {
public:
    string minNumber(vector<int>& nums) {
        vector<string> strs;
        for(int num:nums) strs.push_back(to_string(num));
        quickSort(strs,0,strs.size()-1);
        string res;
        for(string str:strs){
            res+=str;
        }
        return res;
    }
    void quickSort(vector<string>& strs,int l,int r){
        if(l>=r) return;
        int i=l,j=r;
        while(i<j){
            while(i<j&&strs[j]+strs[l]>=strs[l]+strs[j]) j--;
            while(i<j&&strs[i]+strs[l]<=strs[l]+strs[i]) i++;
            swap(strs[i],strs[j]);
        }
        swap(strs[l],strs[i]);
        quickSort(strs,l,i-1);
        quickSort(strs,i+1,r);
    }
};
相关文章
|
编解码 开发框架 Java
Unity 之 打包参数 -- Player面板属性详解
Unity Project Setting Player面板详解,看完这篇文章,彻底搞懂各个选项设置实际作用。
3366 0
Unity 之 打包参数 -- Player面板属性详解
|
Java 应用服务中间件 Spring
【Spring Boot 源码学习】@Conditional 条件注解
【1月更文挑战第8天】本篇介绍 @Conditional 条件注解及其衍生注解
441 3
【Spring Boot 源码学习】@Conditional 条件注解
|
10月前
|
机器学习/深度学习 运维 测试技术
“思考更长时间”而非“模型更大”是提升模型在复杂软件工程任务中表现的有效途径 | 学术研究系列
本研究成功展示了通过统一的测试时计算(TTS)扩展框架,可以显著增强个人可部署的开源 SWE Agent 的代码推理和问题解决能力。我们证明了“思考更长时间”(增加推理计算)而非“模型更大”(增加参数)是提升模型在复杂软件工程任务中表现的有效途径。这项工作为在资源受限环境下(如私有部署)使用和发展高性能 SWE Agent 开辟了新的可能性。
时间序列分析实战(二):时序的ARMA模型拟合与预测
时间序列分析实战(二):时序的ARMA模型拟合与预测
|
XML 数据采集 编解码
【Python】已解决:UnicodeEncodeError: ‘utf-8’ codec can’t encode character ‘\udf76’ in position 32: surrog
【Python】已解决:UnicodeEncodeError: ‘utf-8’ codec can’t encode character ‘\udf76’ in position 32: surrog
370 0
|
SQL 存储 数据库
SQL NOT NULL
【11月更文挑战第14天】
443 6
|
安全 Java API
Java中的并发编程:深入理解线程同步与协作机制
在Java的并发编程领域中,线程间的同步与协作是实现高效、稳定多线程应用的关键。本文将深入探讨Java中用于线程同步的各种锁机制,包括内置锁和显式锁,以及线程间协作的等待/通知机制。同时,我们将通过实例分析这些机制的应用,并指出常见的并发问题及解决方案,旨在为读者提供一套完整的Java并发编程指南。
|
机器学习/深度学习 安全 网络协议
智能家居安全:技术与挑战
本文将深入探讨智能家居系统的安全性问题,从技术角度分析当前面临的主要威胁和解决策略。通过具体案例说明如何加强智能家居的数据保护和隐私安全,同时指出未来研究的方向。
496 2
|
关系型数据库 MySQL 数据管理
深入解析 MySQL 中的关系类型
【8月更文挑战第31天】
514 0

热门文章

最新文章