Contents
Problem
題目網址
中文網址
利用翻轉數列來達到由小到大,4321 -> 1234。
Solution
從最底層開始處理,依序push進stack(這裡我使用vector)
ex.
(top) 5 3 6 2 1 4 (bottom)
[5] 5
[4] 3
[3] 6
[2] 2
[1] 1
[0] 4
i = 0
從[ i ]開始尋找上面是否有比[ i ]大的數(取較大的):
- 有,將較大的數~Top翻轉,再從[ i ]~Top進行翻轉即可將[ i ]變為較大的數。
- 沒有,繼續。
最後 i + 1
重複直到 i 到 Top。
P.S.輸出翻轉的位置為stack的index+1。
Code
1 |
|