179. Largest Number - Medium

前往題目

思路

  1. 利用string比較時會照數字先後排序(0, 1, 2, 3, ...)
  2. 排序完之後第一位是最小的(以第一個數字來看),然後越來越大
  3. 檢查最後一個數字的第一位是不是0,如果是就直接回傳0,因為沒有其他可能了
  4. 最後把string array由後往前拼起來就是答案了

Code

討論區解答

class Solution {
    public String largestNumber(int[] nums) {
        String[] numString = new String[nums.length];
        // Convert to String
        for (int i = 0; i < nums.length; ++i) {
            numString[i] = nums[i] + "";
        }

        Arrays.sort(numString, new Comparator<String>() {
            @Override
            public int compare(String i, String j) {
                String s1 = i+j;
                String s2 = j+i;
                return s1.compareTo(s2);
            }
        });

        // Check if the largest element is 0
        if (numString[numString.length-1].charAt(0) == '0') return "0";

        String res = "";

        for (int i = 0; i < numString.length; ++i) {
            res = numString[i] + res;
        }
        return res;
    }
}

2024/05/09

  • 沒想到排序可以完美解決
  • 排序時會一位一位比較,剛好就是這題需要的演算法

179. Largest Number - Medium
https://f88083.github.io/2024/01/14/179-Largest-Number-Medium/
作者
Simon Lai
發布於
2024年1月14日
許可協議