【題目描述】
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/