問題: 給定一個非負數整數列表,將它們排列成最大數字。列表中最大的數字python
所以給出[1,20,23,4,8,最大的形成數量爲8423201.
我就是看不慣以下解決方案:
是什麼num.sort(cmp=lambda x, y: cmp(y + x, x + y))
辦?
爲什麼它有兩個參數x和y?如果輸入一個列表,x和y在列表中表示什麼?
class Solution:
# @param num, a list of integers
# @return a string
def largestNumber(self, num):
num = [str(x) for x in num]
num.sort(cmp=lambda x, y: cmp(y + x, x + y))
largest = ''.join(num)
return largest.lstrip('0') or '0'
if __name__ == "__main__":
num = [3, 30, 34, 5, 9]
print Solution().largestNumber(num)
有人可以解釋代碼解決方案嗎?謝謝。
FWIW,該代碼將只對Python的2.使用'cmp'功能參數'sort'的工作已被棄用,在Python 3不再存在,看到的是https:/ /stackoverflow.com/questions/30140796/sort-a-list-to-form-the-largest-possible-number對這個問題的各種解決方案。您可以閱讀[文檔](https://docs.python.org/2/library/stdtypes.html#mutable-sequence-types)中的'sort'中的'cmp',請參閱註釋8。 docs for the built-in ['cmp'](https://docs.python.org/2/library/functions.html#cmp)。 –
這是使用舊式比較函數來排序列表,它使用字符串連接和比較來排序,例如, ''3'+'30'(330)>'30'+'3'(303)',因爲「8XX」>「XX8」'',所以會強制列表前面的'8'。 – AChampion