題目:給定乙個整數陣列,請將其重新排序,以構造最小值。
樣例 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初...