給出一組非負整數,重新排列他們的順序把他們組成乙個最大的整數。
最後的結果可能很大,所以我們返回乙個字串來代替這個整數。
您在真實的面試中是否遇到過這個題? 是
給出[1, 20, 23, 4, 8]
,返回組合最大的整數應為8423201
。
在 o(nlogn) 的時間複雜度內完成。
實現**:
注意:python3中內建函式沒有比較函式,所以需要匯入functools.cmp_to_key(func),
比較函式是可呼叫的,接受兩個引數,比較這兩個引數並根據他們的大小關係返回負值、零或正值中的某乙個。關鍵字函式也是可呼叫的,接受乙個引數,同時返回乙個可以用作排序關鍵字的值。
from functools import cmp_to_key
class solution:
"""@param nums: a list of non negative integers
@return: a string
"""def largestnumber(self, nums):
# write your code here
if not nums:
return ''
res = ''.join(sorted(map(str, nums), key = cmp_to_key(self.cmp), reverse = true))
#[0, 0] 會輸出 『00』,進行處理
if int(res) == 0:
return '0'
return res
def cmp(self, x, y):
if x + y > y + x:
return 1
elif x + y < y + x:
return -1
else:
return 0
lintcode練習 42 最大子陣列 II
給定乙個整數陣列,找出兩個 不重疊 子陣列使得它們的和最大。每個子陣列的數字在陣列中的位置應該是連續的。返回最大的和。給出陣列 1,3,1,2,1,2 這兩個子陣列分別為 1,3 和 2,1,2 或者 1,3,1,2 和 2 它們的最大和都是7 要求時間複雜度為 o n 子陣列最少包含乙個數 cla...
Lintcode 最大矩形
類似於蓄水池問題,首先創造乙個矩形,記錄每一列上true的數量。1,1,0,0,1 0,1,0,0,1 0,0,1,1,1 0,0,1,1,1 0,0,0,0,1 可轉換為 1,1,0,0,1 0,2,0,0,2 0,0,1,1,3 0,0,2,2,4 0,0,0,0,5 第一種方案 a i j m...
lintcode最大子陣列
最大子陣列 給定乙個整數陣列,找到乙個具有最大和的子陣列,返回其最大和。注意事項 子陣列最少包含乙個數 您在真實的面試中是否遇到過這個題?yes 樣例給出陣列 2,2,3,4,1,2,1,5,3 符合要求的子陣列為 4,1,2,1 其最大和為6 挑戰 要求時間複雜度為o n 標籤 相關題目 分析 這...