179. Largest Number - Medium
前往題目
思路
- 利用
string
比較時會照數字先後排序(0, 1, 2, 3, ...
) - 排序完之後第一位是最小的(以第一個數字來看),然後越來越大
- 檢查最後一個數字的第一位是不是
0
,如果是就直接回傳0
,因為沒有其他可能了 - 最後把
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/