leetcode 排序求解

2021-10-06 19:24:02 字數 1106 閱讀 1171

輸入乙個非負整數陣列,把陣列裡所有數字拼接起來排成乙個數,列印能拼接出的所有數字中最小的乙個。

示例 1:

輸入: [10,2]

輸出: 「102」

示例 2:

輸入: [3,30,34,5,9]

輸出: 「3033459」

0 < nums.length <= 100

說明:輸出結果可能非常大,所以你需要返回乙個字串而不是整數

拼接起來的數字可能會有前導 0,最後結果不需要去掉前導 0

根據題目的要求,兩個數字m和n能拼接成數字mn和nm,如果mn < nm那麼現在他們的相對位置是正確的,如果mn > nm,那麼就需要將n移到m的前面,根據這樣的特性我們能將整個陣列進行排列,得到最終的結果.

我們在比較的時候先將資料轉換成str格式的,利用str格式的字串直接比較就可以

這個題目要求我們轉換成字串的形式,是隱含了乙個大數的問題

class

solution

(object):

defminnumber

(self, nums)

:"""

:type nums: list[int]

:rtype: str

"""ifnot nums:

return

none

for i in

range

(len

(nums)):

nums[i]

=str

(nums[i]

)for i in

range

(len

(nums)):

for j in

range

(i+1

,len

(nums)):

if(nums[i]

+ nums[j]

)>

(nums[j]

+ nums[i]):

nums[i]

, nums[j]

= nums[j]

, nums[i]

return

''.join(nums)

LeetCode 求解最長回文長度

求解最長回文的問題有多種解法,這裡對複雜度為o n 的manacher演算法進行簡單的介紹 manacher演算法主要解決了兩個問題 下面就來看看具體是怎麼解決這兩個問題的吧!回文字串可能出現abba,aba兩種情況,對於abba其中心點bb,aba中心點為a,那麼對於要求解的字串,通過首尾及間隔插...

LeetCode 利用雜湊表求解

python的dict採用了雜湊表,最低能在 o 1 時間內完成搜尋。下面幾道題就是利用dict來解答 簡單 存在重複元素 給定乙個整數陣列,判斷是否存在重複元素。如果任意一值在陣列 現至少兩次,函式返回true。如果陣列中每個元素都不相同,則返回false。示例 1 輸入 1,2,3,1 輸出 t...

Leetcode 640 求解方程

leetcode 640 求解方程 ps 這個是之前在牛客網上做了快手的演算法筆試真題中有一道是解一元一次方程。一開始思路是嘗試將字串轉化成列表然後暴力破解,但是多次嘗試以後報錯,因為方程移項問題導致整個過程非常繁瑣容易出錯。因此在查閱資料之後發現了eval函式的巧妙用法,具體思路可以參閱 說回到這...