陣列重組找最小 C語言

2021-10-02 14:13:24 字數 1585 閱讀 1024

題目:給定乙個整數陣列,請將其重新排序,以構造最小值。

樣例 2:

輸入:[3, 32, 321]

輸出:[321, 32, 3]

解釋:通過將陣列重新排序,可構造 6 個可能性數字:

3+32+321=332321

3+321+32=332132

32+3+321=323321

32+321+3=323213

321+3+32=321332

321+32+3=321323

其中,最小值為 321323,所以,將陣列重新排序後,該陣列變為 [321, 32, 3]。

解題思路:(一開始用整數來寫,還需要儲存每個數的位數,改用字串,就可以解決這個問題)

先用二維陣列儲存獲得字串。再對每個字串進行處理,並把字串存在鍊錶中,存入方式有兩種(從頭進,從尾進)。

**

//尋找

link *head,

*p;char temp[9]

;//temp,用於儲存最後的最小數。

int sign;

//sign,判斷從頭進,還是從尾進。

linkinit

(&head)

;linkinserttop

(head, nums[0]

);p = head->next;

strcpy

(temp, nums[0]

);for(i =

1; i < num; i++

)else

if(sign ==1)

}

②將字串進行處理

int

zuhe

(char

,char

);intzuhe

(char x,

char y)

, t2[9]

=;//用於儲存x和y。

strcpy

(t1, x)

;strcpy

(t2, y)

;strcat

(t1, t2)

;strcat

(t2, t1);if

(strcmp

(t1, t2)

<=0)

else

}

void

linkinserttop

(link *head,

char nums[9]

);void

linkinserttop

(link *head,

char nums[9]

)void

linkinserttail

(link *head,

char nums[9]

);void

linkinserttail

(link *head,

char nums[9]

) p->next = q->next;

q->next = p;

}

c語言 用陣列找最小數 消除重複

用陣列找最小數 輸入十個數字,找出最小數並列印出來 include include define s 10 void minx int b int main else printf min is d min 消除重複 程式讀入20個數,每讀入乙個資料,如果它不與前面讀入的資料重複,則將其列印出來 i...

C 找最小數

輸入描述 輸入有多組資料。每組輸入n,然後輸入n個整數對。輸出描述 輸出最小的整數對。示例1輸入 53 3 2 25 5 2 13 6 輸出 2 1解題思想 來自本人牛客網賬號 迪迦的意志 沒看到太多用排序的,用結構體定義輸入資料,用c 自帶的sort函式排序兩次就得到結果 第一次,將x按從小到大排...

陣列1 旋轉陣列 找最小值 找指定值

1.乙個有序陣列1,2,3,4,5,6,7,8,9,但是被截斷處理了,變成了5,6,7,8,9,1,2,3,查詢陣列的最小值 旋轉陣列求最小值 最小元素位於end start 1的位置 迴圈條件是array start array end 特殊情況 1 旋轉0個元素,第乙個元素是最小值,因此mid初...