Lintcode51 Previous Permutation solution 題解

【題目描述】

Given a list of integers, which denote a permutation.Find the previous permutation in ascending order.

Notice:The list may contains duplicate integers.

給定一個整數數組來表示排列,找出其上一個排列。

注意:排列中可能包含重複的整數

【題目鏈接】

www.lintcode.com/en/problem/previous-permutation/

【題目解析】

這題就是next permutation的逆過程。首先找到從後往前遍歷,直到找到一個數(假設位置爲i)比之它前一位數小(即該位到數組的最後是一個遞增序列),然後將i到數組最後的所有數按遞減排列。然後在這個遞增數列裏面找到第一個比i-1位置上數小的數,交換兩個數的位置即可。如果i=1則說明之前的整個數組都是遞增序列,現在整個數組變爲遞減數列,正好是previous permutation,因此不用再做任何其他操作。

【參考答案】

http://www.jiuzhang.com/solutions/previous-permutation/


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章