Rotate List,Permutation Sequence,Next Permutation

Rotate List

循環移位鏈表,處理一下循環次數之後,拆分鏈表再合併即可,簡單的鏈表操作


Permutation Sequence

用數學方法可以計算出第幾位應該是幾

例子:n = 4, k = 18

用一個數組記錄階乘數(全排列數):1,2,6 (n-1位即可)

k -= 1,變成 k = 17

從後面開始遍歷更新數組:

第三位:17 / 6 = 2,k = 17 % 6 = 5

第二位:5 / 2 = 2, k = 5 % 2 = 1

第一位:1 / 1 = 1, k = 1 % 1 = 0

數組變爲:1,2,2(這裏記錄的意義自行考慮)

再從後面遍歷構造排列:

臨時字符串 str = "1234"

構造過程:

遍歷第三位:ans += str[ array[3] ] ,即 ans += str[2],此時 ans = "3",同時在str裏刪除該字符,變爲 str = "124"

遍歷第二位:ans += str[ array[2] ] ,即 ans += str[2],此時 ans = "34",同時在str裏刪除該字符,變爲 str = "12"

遍歷第一位:ans += str[ array[1] ] ,即 ans += str[1],此時 ans = "342",同時在str裏刪除該字符,變爲 str = "1"

最後 ans += str,即爲 ans = "3421"

ans 即爲答案


Next Permutation

用數學方法分析下一個排列與上一個排列的關係即可

提示:從後往前遍歷,尋找遞增遞減關係,並調整位置即可

發佈了68 篇原創文章 · 獲贊 0 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章