Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def find_pos(arr):
- pos = None
- for i in range(len(arr) - 1):
- if arr[i] > arr[i + 1]:
- pos = i
- return pos
- def find_max_lower_idx(pos):
- max_lower = 0
- for idx in range(pos + 1, len(arr)):
- if max_lower < arr[idx] < arr[pos]:
- max_lower = idx
- return max_lower
- def swap(pos_1, pos_2, arr):
- x = arr[pos_1]
- arr[pos_1] = arr[pos_2]
- arr[pos_2] = x
- def get_previous_permutation(arr):
- pos = find_pos(arr)
- if pos is None:
- return sorted(arr, reverse=True)
- max_lower = find_max_lower_idx(pos)
- swap(pos, max_lower, arr)
- return arr[:pos + 1] + sorted(arr[pos + 1:], reverse=True)
- if __name__ == '__main__':
- arr = [1, 3, 2, 5, 4]
- print(f'Got - {arr}')
- print(f'Previous permutation - {get_previous_permutation(arr)}')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement