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

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

    思路:

    本体有两个难点:第一个难点是想出一种新的比较规则来排序一个数组;第二个难点在于证明这个比较规则是有效的,并且证明根据这个规则排序之后把数组中所有数字拼接起来得到的数字是最小的。

    考察解决大数问题的能力。应聘者在面试的时候要意识到,把两个int型的整数拼接起来得到的数字可能会超出int型数字能够表达的范围,从而导致数字益处。我们可以用字符串表示数字,这样就能简洁地解决大数问题。

    import java.util.Arrays;
    import java.util.Comparator;
    import java.util.Scanner;
    public class minCmp{
        public String getMin(int[] array){
            if(array == null || array.length == 0) return "";
            String[] str = new String[array.length];
            for(int i=0;i<array.length;i++){
                str[i] = String.valueOf(array[i]);
            }
            Arrays.sort(str,new Comparator<String>(){
                @Override
                public int compare(String o1,String o2){
                    return (o1+o2).compareTo(o2+o1);
                }
            });
            String cc = "";
            for(int i=0;i<str.length;i++){
                cc += str[i];
            }
            return cc;
        }
        public static void main(String[] args){
    //         Scanner scanner = new Scanner(System.in);
    //         System.out.println("请任意输入一个数组(以“,”隔开):");
    //         String str = scanner.nextLine();
    //         String[] temp = str.split(",");
    //         scanner.close();
    //         int[] array = new int[temp.length];
    //         for(int i = 0;i < temp.length;i++)
    //         {
    //             array[i] = Integer.parseInt(temp[i]);
    //         }
            
            int[] array = {3,32,321};
            minCmp comparefun = new minCmp();
            System.out.println("---" + comparefun.getMin(array));
        }
    }
  • 相关阅读:
    【微信开发之问题集锦】redirect_uri 参数错误
    调度算法之时间片轮转算法
    快速排序算法分析和实现
    单链表(c语言实现)贼详细
    调度算法之最短作业优先算法
    HDU1027
    HDU1753 (大正小数相加)
    HDU 1715 (大数相加,斐波拉契数列)
    HDU 1316 (斐波那契数列,大数相加,大数比较大小)
    HDU1047(多个大数相加)
  • 原文地址:https://www.cnblogs.com/yingpu/p/9252129.html
Copyright © 2011-2022 走看看