LeetCode Solutions
179. Largest Number
Time: $O(n\log n)$ Space: $O(n)$
class Solution {
public:
string largestNumber(vector<int>& nums) {
string ans;
sort(begin(nums), end(nums), [](int a, int b) {
return to_string(a) + to_string(b) > to_string(b) + to_string(a);
});
for (const int num : nums)
ans += to_string(num);
return ans[0] == '0' ? "0" : ans;
}
};
class Solution {
public String largestNumber(int[] nums) {
final String s = Arrays.stream(nums)
.mapToObj(String::valueOf)
.sorted((a, b) -> (b + a).compareTo(a + b))
.collect(Collectors.joining(""));
return s.startsWith("00") ? "0" : s;
}
}
class LargerStrKey(str):
def __lt__(x: str, y: str) -> bool:
return x + y > y + x
class Solution:
def largestNumber(self, nums: List[int]) -> str:
return ''.join(sorted(map(str, nums), key=LargerStrKey)).lstrip('0') or '0'