首页 > 其他分享 >排序:剑指 Offer 45. 把数组排成最小的数

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

时间:2023-04-27 10:47:52浏览次数:37  
标签:String nums Offer int 45 拼接 数组 排序

题目描述:

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

 

 

提示:

  0 < nums.length <= 100
说明:

  输出结果可能非常大,所以你需要返回一个字符串而不是整数
  拼接起来的数字可能会有前导 0,最后结果不需要去掉前导 0

 

 注:+ 代表的是字符串拼接操作

根据以上规则,套用任何排序方法对 numsnums 执行排序即可。

 

 

class Solution{
    public String minNumber(int nums[]){
        String strs[] = new String[nums.length];
        for(int i=0;i<nums.length;i++){
            strs[i] = String.valueOf(nums[i]);
        }
        quickSort(strs,0,strs.length-1);
        StringBuilder res = new StringBuilder();
        for(String s:strs){
            res.append(s);
        }
        return res.toString();
    }
    void quickSort(String strs[],int l,int r){
        if(l>=r) return;
        int i=l,j=r;
        String tmp = strs[i];
        while(i<j){
            while((strs[j]+strs[l]).compareTo(strs[l]+strs[j])>=0&&i<j) j--;
            while((strs[i]+strs[l]).compareTo(strs[l]+strs[i])<=0&&i<j) i++;
            tmp = strs[i];
            strs[i] = strs[j];
            strs[j] = tmp;
        }
        strs[i] = strs[l];
        strs[l] = tmp;
        quickSort(strs,l,i-1);
        quickSort(strs,i+1,r);
    }
}

 

 

 

 

 

 

标签:String,nums,Offer,int,45,拼接,数组,排序
From: https://www.cnblogs.com/zhz123567/p/17358238.html

相关文章

  • 【剑指 Offer】38. 字符串的排列
    【题目】输入一个字符串,打印出该字符串中字符的所有排列。 你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。 示例:输入:s="abc"输出:["abc","acb","bac","bca","cab","cba"]来源:力扣(LeetCode)链接:https://leetcode.cn/problems/zi-fu-chuan-de-pai-lie-......
  • 部分排序算法总结
    1.冒泡排序冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端......
  • 8冒泡排序
    #include<iostream>usingnamespacestd;#defineN10intmain(){ intarr[N],a,k,i,j,count; cin>>a; for(i=0;i<a;i++){ cin>>arr[i]; } for(i=0;i<a;i++){ for(j=i+1;j<a;j++){ k=arr[j]; if(k<arr[i]){ arr[j]=arr[i]; arr[i]=......
  • c语言趣味编程(8)冒泡排序
    一、问题描述对n个整数进行升序排列(数据由键盘键入)二、设计思路(1)读取从键盘键入的n个数据,存入数组a中;(2)用for循环对数组a中的数据进行遍历,并用if语句来判断大小,按从小到大存入;(3)遍历输出数组中已经完成升序排列的数组元素;三、程序流程图 四、伪代码五、代码1#include......
  • 使用sortabl对表格进行拖拉拽重新排序
    1.安装依赖npminstallsortablejs--save2.包裹拖拽内容<divclass="draggable"style="padding:20px">需要拖拽的内容,如表格</div>3.定义拖拽方法 //列拖拽  columnDrop(){    constwrapperTr=document.querySelector('.draggable.el-ta......
  • B. Equalize by Divide - 贪心+思维+构造+数学+排序
    题意:给定一个数组,可以进行任意多次以下操作:1.选择第i和第j个数。2.使a[i]=a[i]/a[j](向上取整)。不可以插入或者删减数组元素,求多少次使数组元素都相同,输出次数以及每次操作的两个下标i,j;如果无法实现输出-1.分析:数组中存在1一定无法实现,或者数组元素都相......
  • 索引列表的制作,中文拼音排序
    业务上最近需要做一个选择人员的页面,右侧会有一个快速索引,样式如下:这个首先要把名字转拼音,然后取首字母,转大写,然后在新建的空对象里进行比对,如果有这个字母,就吧这条数据push进去,没有的话就在对象里创建该首字母的数组,再push进去,这样就形成了一个包含26个英文字母数组的对象结构......
  • 【剑指 Offer】 59 - II. 队列的最大值
    【题目】请定义一个队列并实现函数max_value得到队列里的最大值,要求函数max_value、push_back和pop_front的均摊时间复杂度都是O(1)。若队列为空,pop_front和max_value需要返回-1示例1:输入:["MaxQueue","push_back","push_back","max_value","pop_front","max_va......
  • 排序三角组件
    效果排序三角组件<template><divclass="order"><divclass="order-text"@click="textBtnFn"><slot></slot></div><divclass="order-icon"@click="nabFn"&......
  • 【剑指 Offer】 59 - I. 滑动窗口的最大值
    【题目】给定一个数组nums和滑动窗口的大小k,请找出所有滑动窗口里的最大值。示例:输入:nums=[1,3,-1,-3,5,3,6,7],和k=3输出:[3,3,5,5,6,7]解释: 滑动窗口的位置               最大值---------------              -----[1 3 ......