next permutation

🏠
 1class Solution:
 2    def nextPermutation(self, perm):
 3        p = len(perm) - 2
 4        while p >= 0 and perm[p] >= perm[p + 1]:
 5            p -= 1
 6        if p != -1:
 7            for i in reversed(range(p + 1, len(perm))):
 8                if perm[i] > perm[p]:
 9                    perm[p], perm[i] = perm[i], perm[p]
10                    break
11            return perm[: p + 1] + [*reversed(perm[p + 1 :])]
12
13
14Solution().nextPermutation([2, 4, 5, 3, 1]) == [2, 5, 1, 3, 4]
15Solution().nextPermutation([1, 2, 3]) == [1, 3, 2]
16Solution().nextPermutation([3, 2, 1]) == [1, 2, 3]
17Solution().nextPermutation([1, 1, 5]) == [1, 5, 1]