zoukankan      html  css  js  c++  java
  • 剑指Offer45.把数组排成最小的数

    题目链接:把数组排成最小的数
    思路:对数组进行排序,假设要{x, y}组成最小数,那么通过比较"xy"和"yx"的大小,可以得到最小值,对整个数组按这种比较大小方式进行排序,最好得到的数组就是最小数。(证明见评论讲解
    代码:

    class Solution {
        public String minNumber(int[] nums) {
            List<String> list = new ArrayList<>(nums.length);
            for(int n : nums){
                list.add(""+n);
            }
            Collections.sort(list, (a, b)->(a+b).compareTo(b+a));
            StringBuilder sb = new StringBuilder();
            for(String n : list){
                sb.append(n);
            }
            return sb.toString();
        }
    }
    
    

    笔记

    • Arrays.sort(T[])可以传入int[]类型数据进行排序,但是这时无法自定义排序方式,因为在Comparator<>接口中参数必须是类不能是基础变量;当传入是String[]类型数组时,是可以自定义排序,因为数组中的元素是对象,不是基础变量。
    • int[]与Integer[]无法进行拆箱装箱
    • 上面代码最好使用String[]对nums[]进行转化,能很好的提高效率18ms -> 7ms。
  • 相关阅读:
    ajax 检测用户名是否可用
    Ajax 知识
    flask 基础
    如何使Session永不过期
    Css 截取字符串长度
    json sort
    js 原生获取Class元素
    js 跳转整理
    html5 ajax Java接口 上传图片
    调用URL 接口服务
  • 原文地址:https://www.cnblogs.com/liuyongyu/p/14193411.html
Copyright © 2011-2022 走看看