题解 | #数字排成最小的数#
把数组排成最小的数
http://www.nowcoder.com/practice/8fecd3f8ba334add803bf2a06af1b993
import java.util.*; public class Solution { //自定义排序规则:思想就是让任意两个数字组成的数都是较小的哪一种情况 class Myconparator implements Comparator<Integer> { public int compare(Integer n1 , Integer n2) { long l1 = Long.parseLong(n1+""+n2) ; long l2 = Long.parseLong(n2+""+n1) ; if(l1 == l2) { return 0 ; } else if(l1 > l2) { return 1 ; } else { return -1 ; } } } //快排(也可以用Arrays.sort() , 单纯练习一下快排) public void sort(int[] numbers , int start , int end , Myconparator cmp) { if(start >= end) { return ; } int i = start ; int j = end ; int temp = numbers[start] ; while(i < j) { while(i < j && cmp.compare(numbers[j],temp) > 0) { j-- ; } if(i < j) { numbers[i] = numbers[j] ; i++ ; } while(i < j && cmp.compare(numbers[i],temp) < 0) { i++ ; } if(i < j) { numbers[j] = numbers[i] ; j-- ; } } numbers[i] = temp ; sort(numbers , start , i-1,cmp) ; sort(numbers , i+1 , end , cmp) ; } public String PrintMinNumber(int [] numbers) { sort(numbers , 0 , numbers.length-1 , new Myconparator()) ; StringBuilder sb = new StringBuilder() ; for(int n : numbers) { sb.append(String.valueOf(n)) ; } return sb.toString() ; } }
一个菜鸟的算法刷题记录 文章被收录于专栏
分享一个菜鸟的成长记录