LeetCode 179:最大数 -- 一道有点意思的题目

今天做了一道有点意思的算法题目,在这里记录下。提交记录 leetcode 179: 最大数 给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。 注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。 示例 1: 输入:nums = [10,2] 输出:“210” 示例 2: 输入:nums = [3,30,34,5,9] 输出:“9534330” 提示: 1 <= nums.length <= 100 0 <= nums[i] <= 109 上最终AC代码: def greater(a, b): # 对比函数,a > b # a, b expect str return int(a + b) - int(b + a) > 0 # 快排 def pivot(arr, low, high): x = arr[high] j = low - 1 for i in range(low, high): if greater2(arr[i], x): j += 1 arr[i], arr[j] = arr[j], arr[i] j += 1 arr[j], arr[high] = arr[high], arr[j] return j def quick_sort(arr, low, high): if low < high: pi = pivot(arr, low, high) quick_sort(arr, low, pi - 1) quick_sort(arr, pi + 1, high) class Solution: def largestNumber(self, nums: List[int]) -> str: nums = [str(n) for n in nums] quick_sort(nums, 0, len(nums) - 1) if nums[0] == '0': return '0' return ''....

April 28, 2022 · 2 min · LingZihuan