zoukankan      html  css  js  c++  java
  • 微软算法100题68 用数组排成最小的数

    68.把数组排成最小的数。
    题目:输入一个正整数数组,将它们连接起来排成一个数,输出能排出的所有数字中最小的
    一个。
    例如输入数组{32, 321},则输出这两个能排成的最小数字32132。
    请给出解决问题的算法,并证明该算法

     1 package com.rui.microsoft;
     2 
     3 import java.util.Arrays;
     4 import java.util.Comparator;
     5 
     6 public class Test68_Minimum {
     7 
     8     public static void main(String[] args) {
     9         int[] a = {3,2,123};
    10         Test68_Minimum app = new Test68_Minimum();
    11         String res = app.smallest(a);
    12         System.out.println(res);
    13     }
    14     
    15     String smallest(int[] a){
    16         Integer[] aux = new Integer[a.length];
    17         for(int i = 0; i < a.length; i++){
    18             aux[i] = a[i];
    19         }
    20         
    21         Arrays.sort(aux, new Comparator<Integer>() {
    22 
    23             @Override
    24             public int compare(Integer o1, Integer o2) {
    25                 return ("" + o1 + o2).compareTo("" + o2 + o1);
    26             }
    27         });
    28         
    29         StringBuilder sb = new StringBuilder();
    30         for(int i = 0; i < aux.length; i++){
    31             sb.append(aux[i]);
    32         }
    33         return sb.toString();
    34     }
    35 }
  • 相关阅读:
    建表关系
    设计模式-策略模式
    设计模式-适配器模式
    在线操作word和在线预览查找的资料记录
    Elasticsearch 使用-安装
    12-factors
    Kafka 使用-安装
    Apache Zookeeper 使用-安装
    Java 使用-安装
    设计模式-模板方法模式
  • 原文地址:https://www.cnblogs.com/aalex/p/5025629.html
Copyright © 2011-2022 走看看