剑指offer-32-把数组排成最小的数

把数组排成最小的数

http://www.nowcoder.com/questionTerminal/8fecd3f8ba334add803bf2a06af1b993

  • 排序,我用的优先级队列,本质上一致的。if(s1+s2>s2+s1){ s2的值小于s1,}
    java的比较器代码lambda表达式
    (o1,o2)->Integer.compare(Integer.parseInt(o1+o2),Integer.parseInt(o2+o1))
  • 基数排序的思路,转为字符串,从高位往低位,逐个排序,高位越小,优先级越高,并且空字符优先级最低。感觉和上面思路差不多。
import java.util.*;

public class Solution {
    public String PrintMinNumber(int [] numbers) {
            PriorityQueue<String> queue = new PriorityQueue<>((o1,o2)->Integer
                             .compare(Integer.parseInt(o1+o2),Integer.parseInt(o2+o1)));

            for(int i=0;i<numbers.length;i++){
                queue.add(String.valueOf(numbers[i]));
            }
            String res="";
            for(int i=0;i<numbers.length;i++){
                res+=queue.poll();
            }
            return res;
    }
}
剑指offer与数据结构 文章被收录于专栏

本专栏包括剑指offer题目和一些刷题用的数据结构,单调栈,树状数组,差分数组,后面还会更新红黑树等较为复杂的数据结构

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务