劍指offer算法題032:把數組排成最小的數

小編在求職找找工作期間劍指offer上的算法題刷了很多遍,並且每道題小編當時都總結了一種最適合面試時手撕算法的最優解法。考慮到劍指offer算法題在面試中的高頻出現,小編每天和大家分享一道劍指offer上的算法題,以及小編總結的答案。下面是第032道劍指offer算法題:

題目描述

輸入一個正整數數組,把數組裏所有數字拼接起來排成一個數,打印能拼接出的所有數字中最小的一個。例如輸入數組{3,32,321},則打印出這三個數字能排成的最小數字爲321323。

分析

這道題思路上比較難,想到了就比較簡單


import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
public class Solution {
    public String PrintMinNumber(int [] numbers) {
        ArrayList<Integer> list = new ArrayList<Integer>();
        for(int num:numbers)
            list.add(num);
        Collections.sort(list,new Comparator<Integer>(){
            public int compare(Integer num1,Integer num2){
                String str1 = num1+""+num2;
                String str2 = num2+""+num1;
                return str1.compareTo(str2);
            }
        });
        String res="";
        for(Integer num:list){
           res += num;
        }
        return res;
    }
}

注:在牛客網上刷劍指offer題目時,最好使用牛客網自帶的編輯器,不建議使用IDE的代碼補全功能,因爲實際面試中是在A4紙上手寫代碼,是沒有代碼提示的。

有些題你看懂了,不代表你會了。看答案前或者看完答案第二天,動手在A4紙上寫寫代碼就知道自己是不是真的會了。
每天分享一道劍指offer算法題目,並且有最適合面試手撕算法環節的解法分享,歡迎大家關注我們~

其他文章

1. 學習筆記和學習資料彙總:前端 + 後端 + java + 大數據 + python + 100多實戰項目 + C++

2. 我的秋招經歷總結:一站式秋招規劃

3. 零基礎學爬蟲

4. 零基礎C++學習總結

歡迎關注個人公衆號【菜鳥名企夢】,公衆號專注:互聯網求職面經javapython爬蟲大數據等技術分享:

公衆號菜鳥名企夢後臺發送“csdn”即可免費領取【csdn】和【百度文庫】下載服務;

公衆號菜鳥名企夢後臺發送“資料”:即可領取5T精品學習資料java面試考點java面經總結,以及幾十個java、大數據項目,資料很全,你想找的幾乎都有

掃碼關注,及時獲取更多精彩內容。(博主985、A+學科碩士,今日頭條大數據工程師)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章