劍指offer 把陣列排成最小的數

2021-10-03 16:32:27 字數 688 閱讀 9926

題目描述

輸入乙個正整數陣列,把陣列裡所有數字拼接起來排成乙個數,列印能拼接出的所有數字中最小的乙個。例如輸入陣列,則列印出這三個數字能排成的最小數字為321323。

比較拼接而成的數字大小時,a和b拼接成的數字可能有兩種情況,ab和ba,當ab>ba時,說明b應該放在前面,因此將陣列從小到大排序,按上述方法依次對比下去即可獲得最小的數字。

思想參考:把陣列排成最小的數

# -*- coding:utf-8 -*-

class solution:

def printminnumber(self, numbers):

# write code here

if not numbers:

return ""

numbers.sort()

for i in range(len(numbers)-1):

num1=int(str(numbers[i])+str(numbers[i+1]))

num2=int(str(numbers[i+1])+str(numbers[i]))

if num1>num2:

numbers[i+1]=num2

else:

numbers[i+1]=num1

return numbers[-1]

劍指offer 把陣列排成最小的數

華電北風吹 天津大學認知計算與應用重點實驗室 日期 2015 10 5 題目描述 輸入乙個正整數陣列,把陣列裡所有數字拼接起來排成乙個數,列印能拼接出的所有數字中最小的乙個。例如輸入陣列,則列印出這三個數字能排成的最小數字為321323。解析 比大小即可,不過比的時候是從從左往右比。注意到字母長度有...

劍指offer 把陣列排成最小的數

輸入乙個正整數陣列,把陣列裡所有數字拼接起來排成乙個數,列印能拼接出的所有數字中最小的乙個。例如輸入陣列,則列印出這三個數字能排成的最小數字為321323。分析 將int型的陣列轉化為string型的陣列,再將string型的陣列排序,排序規則依據比較兩個string變數相加後的大小 注意這個cmp...

劍指offer 把陣列排成最小的數

題目 輸入乙個正整數陣列,把陣列裡所有數字拼接起來排成乙個數,列印能拼接出的所有數字中最小的乙個。例如輸入陣列,則列印出這三個數字能排成的最小數字為321323。分析 題目要求比較整數陣列組成後的數的大小,在int及long中來處理很容易超出範圍,實際上大數問題一般放在字串中來處理。我們把陣列元素兩...