[劍指Offer] 把陣列排成最小的數(Python)
題目描述
輸入一個正整數陣列,把數組裡所有數字拼接起來排成一個數,列印能拼接出的所有數字中最小的一個。例如輸入陣列{3,32,321},則打印出這三個數字能排成的最小數字為321323。
思路
先將整數陣列轉為字串陣列,然後用比較器實現字串比較大小。如果有字串A和B, A + B < B + A,則A在前;反之B在前。最後將字串陣列連線去除返回值左側的0。
程式碼
# -*- coding:utf-8 -*-
class Solution:
def PrintMinNumber(self, numbers):
if numbers is None or len(numbers) == 0:
return ""
// 對映為字串陣列
numbers = map(str, numbers)
numbers.sort(cmp = lambda x, y : cmp(x + y, y + x))
return "".join(numbers).lstrip()
相關推薦
劍指offer -- 把陣列排成最小的數
題目描述 輸入一個正整數陣列,把數組裡所有數字拼接起來排成一個數,列印能拼接出的所有數字中最小的一個。例如輸入陣列{3,32,321},則打印出這三個數字能排成的最小數字為321323。 AC程式碼 import java.util.ArrayList; import java.
劍指offer---把陣列排成最小的數
題目:把陣列排成最小的數 要求:輸入一個正整數陣列,把數組裡所有數字拼接起來排成一個數,列印能拼接出的所有數字中最小的一個。例如輸入陣列{3,32,321},則打印出這三個數字能排成的最小數字為321323。 class Solution { public: string PrintMi
劍指offer 把陣列排成最小的數
題目描述 輸入一個正整數陣列,把數組裡所有數字拼接起來排成一個數,列印能拼接出的所有數字中最小的一個。例如輸入陣列{3,32,321},則打印出這三個數字能排成的最小數字為321323。 解析:此題的精
劍指offer-把陣列排成最小的數(陣列)
題目描述 輸入一個正整數陣列,把數組裡所有數字拼接起來排成一個數,列印能拼接出的所有數字中最小的一個。例如輸入陣列{3,32,321},則打印出這三個數字能排成的最小數字為321323。 這道題就是一步步拼接,先把兩個數拼接,得到較小的那個 時間複雜度是O(nlogn) class
[劍指offer]把陣列排成最小的數
思路: 用兩種組合兩兩比較兩個數,例如32 23,排序為2332小於3223,就把這兩個數原本的位置交換,最後將小的放在前面 實現: import java.util.ArrayList; public class Solution { public String Print
劍指Offer-把陣列排成最小的數(Java實現)
題目描述 輸入一個正整數陣列,把數組裡所有數字拼接起來排成一個數,列印能拼接出的所有數字中最小的一個。例如輸入陣列{3,32,321},則打印出這三個數字能排成的最小數字為321323。 思路分析: 本題的核心思想還是排序,但是如何排序是個問題。 先將整型陣列轉換成字串
劍指offer: 把陣列排成最小的數
題目描述 輸入一個正整數陣列,把數組裡所有數字拼接起來排成一個數,列印能拼接出的所有數字中最小的一個。例如輸入陣列{3,32,321},則打印出這三個數字能排成的最小數字為321323。 解題思想 觀察陣列發現是所有的整數構成的陣列,簡單起見大家先考慮如果是僅由一位整數構成的陣列,如{7
[劍指Offer] 把陣列排成最小的數(Python)
題目描述 輸入一個正整數陣列,把數組裡所有數字拼接起來排成一個數,列印能拼接出的所有數字中最小的一個。例如輸入陣列{3,32,321},則打印出這三個數字能排成的最小數字為321323。 思路 先將整數陣列轉為字串陣列,然後用比較器實現字串比較
劍指Offer-把陣列排成最小的數
題目描述輸入一個正整數陣列,把數組裡所有數字拼接起來排成一個數,列印能拼接出的所有數字中最小的一個。例如輸入陣列{3,32,321},則打印出這三個數字能排成的最小數字為321323。演算法思路1、定義字串比較函式compare2、將整數陣列轉化成字串陣列,利用氣泡排序,得到
劍指offer:把陣列排成最小的數(java)
題目:輸入一個正整數陣列,把數組裡面所有的數字拼接排成一個數,列印能拼接出的所有數字中的一個。例如輸入陣列{3,32,321},則打印出這3個數字能排成的最小數字321323. 這個題目最直接的做法應該是先求出這個陣列中的所有數字的全排列,然後把每個排列拼接起來,
劍指offer-把陣列排成最小的數(Java)
題目描述 輸入一個正整數陣列,把數組裡所有數字拼接起來排成一個數,列印能拼接出的所有數字中最小的一個。例如輸入陣列{3,32,321},則打印出這三個數字能排成的最小數字為321323。 思路:
劍指offer____把陣列排成最小的數
輸入一個正整數陣列,把數組裡所有數字拼接起來排成一個數,列印能拼接出的所有數字中最小的一個。例如輸入陣列{3,32,321},則打印出這三個數字能排成的最小數字為321323。 class Solution { public: bool sort(char * s
劍指offer——列印陣列拼接最小數
題目:輸入一個正整數陣列,把數組裡面所有的數字拼接排成一個數,列印能拼接出的所有數字中的一個。例如輸入陣列{3,32,321},則打印出這3個數字能排成的最小數字321323.這個題目最直接的做法應該是先求出這個陣列中的所有數字的全排列,然後把每個排列拼接起來,最後求出排列起
劍指offer32把陣列排成最小的數
class Solution {public: static bool cmp(int a,int b) { string A=""; string B=""; A+=to_string(a); A+=to_string(b);
劍指offer——把陣列排列成最小數
任意給出幾個數,隨機組合成最小數,接觸這個題最開始的想法,比對每位的大小,然後排列,不過隨機數位數不定,建立變數,用for迴圈計算,複雜度高而且不符合Python大法倔強的性格。後觀察討論區,對比組合之後的數值,效果不錯。 class Solution: def PrintMinNum
劍指Offer--旋轉陣列的最小數字
題目:把一個數組最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。 輸入一個非遞減排序的陣列的一個旋轉,輸出旋轉陣列的最小元素。 例如陣列{3,4,5,1,2}為{1,2,3,4,5}的一個旋轉,該陣列的最小值為1。 NOTE:給出的所有元素都大於0,若陣列大小為0,請返回0。 思路:
劍指offer[旋轉陣列的最小數字]
劍指offer[旋轉陣列的最小數字] 題目描述 思路 程式碼 細節知識 題目描述 把一個數組最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。 輸入一個非減排序的陣列的一個旋轉,輸出旋轉陣列的
劍指offer--旋轉陣列的最小值
題目如下 把一個數組最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。 輸入一個非減排序的陣列的一個旋轉,輸出旋轉陣列的最小元素。 例如陣列{3,4,5,1,2}為{1,2,3,4,5}的一個旋轉,該陣列的最小值為1。 NOTE:給出的所有元素都大於0,若陣列大小為0,
劍指offer-旋轉陣列的最小數字
題目描述 把一個數組最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。 輸入一個非減排序的陣列的一個旋轉,輸出旋轉陣列的最小元素。 例如陣列{3,4,5,1,2}為{1,2,3,4,5}的一個旋轉,該陣列的最小值為1。 NOTE:給出的所有元素都大於0,若陣列大小為0
劍指offer----旋轉陣列的最小數字----java實現
把一個數組最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入一個遞增排序的陣列的一個旋轉,輸出旋轉陣列的最小元素。例如陣列{3,4,5,1,2}為{1,2,3,4,5}的一個旋轉,該陣列的