31. Next Permutation

https://leetcode.com/problems/next-permutation/

O(n), O(1)

http://bangbingsyb.blogspot.com/2014/11/leetcode-next-permutation.html?m=1

  1. 從右到左找到第一個非升序的 index (pivot), (若找不到代表已經是最大排序, 要直接 reverse)

  2. 找到後再從右到左, 找到比 nums[pivot] 大的元素

  3. 做 swap

  4. pivot 後的做 reverse

https://www.cnblogs.com/grandyang/p/4428207.html

[[1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]

如果给定数组是 "降序",则说明是全排列的最后一种情况,则下一个排列就是最初始情况

題目要的是 lexicographically next greater permutation of numbers

邏輯的思考, 我不可能改第一位, 如果想要大一點點, 會想從最低位開始, 但改了最低位, 其他位必定也要調整

假設是 1~5

[ ] 4321 => 這狀況下, 後面都已經是最大了, 如果想要更大就要去動到前面的部分了

[ ] 4 5321

new version

Last updated

Was this helpful?