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

2021-10-14 05:38:44 字數 1169 閱讀 9648

題目描述

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

class

solution

sort

(str.

begin()

,str.

end(),

(string a,string b));

string ret;

for(string s : str) ret+

= s;

return ret;}}

;

思路:

先將整形陣列轉變成字串陣列,再用sort和lambda表示式進行排序,最後取出合併返回。

仿函式

struct com };

sort

(str.

begin()

, str.

end(),

com())

;// com()為臨時物件

lambda表示式

// 1. 匿名lambda表示式

sort

(str.

begin()

, str.

end(),

(string a, string b));

// 2.具名lambda表示式

auto lam =

(string a, string b)

;sort

(str.

begin()

, str.

end(

), lam)

;;

函式指標

bool

static

com(string a, string b)

//加static的原因:類成員函式有隱藏的this指標,static 可以去this指標

sort

(str.

begin()

, str.

end(

), com)

;

JZ32 把陣列排成最小的數

題目描述 輸入乙個正整數陣列,把陣列裡所有數字拼接起來排成乙個數,列印能拼接出的所有數字中最小的乙個。例如輸入陣列,則列印出這三個數字能排成的最小數字為321323。題解 給定乙個陣列,我們找出他可能的排列組合,且是所有可能排列組合裡最小的數字,所以我們需要額外加上一步來找出我們獲得的所有排列組合裡...

劍指Offer (32)把陣列排成最小的數

題目描述 輸入乙個正整數陣列,把陣列裡所有數字拼接起來排成乙個數,列印能拼接出的所有數字中最小的乙個。例如輸入陣列,則列印出這三個數字能排成的最小數字為321323。實現如下 要將所有元素組合成乙個最小的數 那麼組合的相鄰元素之間都是num1num2的形式 所以使用庫函式的sort將各個元素以str...

劍指offer系列(32) 把陣列排成最小的數

題目描述 輸入乙個正整數陣列,把陣列裡所有數字拼接起來排成乙個數,列印能拼接出的所有數字中最小的乙個。例如輸入陣列,則列印出這三個數字能排成的最小數字為321323。思路分析 對陣列中每兩個元素進行組合,比較,確認出最小的排列。比如,3與32組合,332 323,所以交換3和32的位置,3與321組...