您好,登錄后才能下訂單哦!
這篇文章主要介紹LeetCode如何把數組排成最小的數,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
輸入一個非負整數數組,把數組里所有數字拼接起來排成一個數,打印能拼接出的所有數字中最小的一個。
輸入: [10,2]
輸出: "102"
輸入: [3,30,34,5,9]
輸出: "3033459"
str(a)+str(b)
與
str(b)+str(a)
的大小關系, 然后對整個列表排序后組成一個字符串即可O(NlogN)
O(N)
class Solution:
def minNumber(self, nums: List[int]) -> str:
# 使用map將原數組的數字轉成字符串
nums = list(map(str, nums))
def quicksort(l, r):
# 經典快速排序實現
if l >= r:
return
pivot = nums[l]
i, j = l, r
while i < j:
# 只需要把這里改成自定義的排序方法即可
while i < j and nums[j] + pivot >= pivot + nums[j]:
j -= 1
nums[i] = nums[j]
# 只需要把這里改成自定義的排序方法即可
while i < j and nums[i] + pivot <= pivot + nums[i]:
i += 1
nums[j] = nums[i]
nums[i] = pivot
quicksort(l, i - 1)
quicksort(i + 1, r)
quicksort(0, len(nums) - 1)
return ''.join(nums)
class Solution:
def minNumber(self, nums: List[int]) -> str:
class compare(str):
def __lt__(self, x):
return self + x < x + self
# 使用python內置sorted的key, 傳入一個重載__lt__的類, 自定義排序
return ''.join(sorted(map(str, nums), key=compare))
以上是“LeetCode如何把數組排成最小的數”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。