题目描述

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

思路

Collections.sort()
compareTo()

代码

public String PrintMinNumber(int [] numbers) {String res = "";if(numbers.length<1){return res;}ArrayList<Integer> list = new ArrayList<>();for(int i:numbers){list.add(i);}Collections.sort(list,new Comparator<Integer>(){public int compare(Integer n1,Integer n2){String s1 = n1+""+n2;String s2 = n2+""+n1;return s1.compareTo(s2);}});for(int i:list){res+=i;}return res;}

知识

1 Collections.sort()
格式一: public static <T extends Comparable<? super T>> void sort(List list)

说明:该方法中的泛型都是Comparable接口的子类,即只有是Comparable接口子类类型的数据,才能进行比较排序。如果其他类型的数据要进行比较排序,必须继承Comparable接口并重写equals()和compareTo()方法。其中如String类、Integer类都是Comparable接口子类,可以进行排序,而基本类型不能进行sort排序。

格式二:public static void sort(List list, Comparator<? super T> c)

说明:该方法中指定比较方式Comparator<? super T> c,即c必须实现Comparator<? super T>接口,覆写compareTo()方法指定比较项目。比较项目在类外指定,比较灵活

举例:

  • 通过Collections.sort()方法,对Integer泛型的List进行排序;
  • List list = [2,3,1];
  • Collections.sort(list);—[1,2,3]
  • 对String泛型的List进行排序; 创建String泛型的List,添加乱序的String元素
  • List list =[“b”,“a”,“c”]
  • Collections.sort(list);----[“a”,“b”,“c”]
  • 其他类型的List排序,比如Student类的name,age
  • 首先让Student implements Comparable
  • @Override
    public int compareTo(Student s) { // 设置age为比较项
    return this.age.compareTo(s.age);
    }
  • Collections.sort(list, new compare(Student s1, Student s2) {
    return s1.age.compareTo(s2.age);
    }

每天一道剑指offer-把数组排成最小的数相关推荐

  1. 剑指offer 把数组排成最小的数 atoi和itoa,pow

    pow(x,y)在#include<math.h>文件中,计算x的y次方. C++引入头文件:#include <stdlib.h> 或者 #include <cstdl ...

  2. 4-剑指offer: 把数组排成最小的数

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

  3. 剑指offer 旋转数组的最小数字

    把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素.例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组 ...

  4. [剑指offer] 旋转数组的最小数字

    本文首发于我的个人博客:尾尾部落 题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1,2 ...

  5. 剑指offer之数组中重复的数(Java实现)

    数组中重复的数 NowCoder 题目描述 在一个长度为 n 的数组里的所有数字都在 0 到 n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字是重复的, 也不知道每个数字重复几次.请找出数 ...

  6. 剑指offer.01 数组中重复的数(0504刷题自用)

    代码 class Solution {public:int findRepeatNumber(vector<int>& nums) {unordered_map <int,i ...

  7. 《剑指offer》-- 把数组排成最小的数、丑数、二进制中1的个数、表示数值的字符串、替换空格

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

  8. 【LeetCode】剑指 Offer 45. 把数组排成最小的数

    [LeetCode]剑指 Offer 45. 把数组排成最小的数 文章目录 [LeetCode]剑指 Offer 45. 把数组排成最小的数 package offer;import java.uti ...

  9. 剑指 Offer 笔记: T45. 把数组排成最小的数

    T45. 把数组排成最小的数 输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个. 示例 1: 输入: [10,2] 输出: "102" ...

  10. 【LeetCode】剑指 Offer 51. 数组中的逆序对

    [LeetCode]剑指 Offer 51. 数组中的逆序对 文章目录 [LeetCode]剑指 Offer 51. 数组中的逆序对 package offer;public class Soluti ...

最新文章

  1. matplotlib - 极坐标上的散点图
  2. 算法学习——决策单调性优化DP
  3. ASP.NET Core管道深度剖析(4):管道是如何建立起来的?
  4. 常用Smarty变量操作符
  5. Hive 操作(一)
  6. 自己搭建Maven项目下运行项目后Eclipse报错:org.springframework.web.context.ContextLoaderListener
  7. linux shell脚本 main,Linux shell启动Java Main函数脚本
  8. st7735屏幕移植-高清图片显示
  9. 关于BottomNavigationView的使用姿势都在这里了
  10. vue-nuxt-ssr 做谷歌,百度统计以及google,facebook埋点总结
  11. Unable to add window android.view.ViewRootImpl$W@c1bf05d -- permission denied for window type 2003
  12. 一只小白,在学习delphi.感觉很吃力。。
  13. Apk脱壳圣战之---脱掉“梆梆加固”的保护壳
  14. centos卸载nvidia驱动_在Ubuntu系统中NVIDIA显卡驱动卸载与安装
  15. mysql(update)
  16. 大合集!互联网行业常用数据分析指标
  17. PDF转图片乱码问题解决
  18. 基于 vue3 element-plus 的暗黑模式
  19. vue引入阿里妈妈的图标
  20. python程序怎么打开_如何运行Python程序

热门文章

  1. elementui el-input输入数字为整数的验证
  2. spring云化架构迁移 (一)
  3. Python替换多个tomcat端口号
  4. 1.7 试探法(回溯法)
  5. 1.深入分布式缓存:从原理到实践 --- 缓存为王
  6. 5.Linux/Unix 系统编程手册(上) -- 深入探究文件IO
  7. 7.卷1(套接字联网API)---套接字选项
  8. 3.高性能MySQL --- 服务器性能剖析
  9. 3.4 Zend_Db_Table_Row
  10. Linux下使用shell脚本远程登录主机(Ubuntu CentOS)