31.下一个排列](https://leetcode.cn/problems/next-permutation/)
详细见下一个排列解答
这道题目所涉及到的一个知识点是字典序。
字典序原意表示英文单词在字典中出现的先后顺序,也可以用于表示数字 0 , 1 , 2 , ⋯ , 9 0,1,2,\cdots,9 0,1,2,⋯,9的大小先后顺序。
字典序比较:对于两个不同的字符串,从左到右按照字典序来比较它们的大小的比较方式称为字典序比较。例如字符串 12345 12345 12345和字符串 21534 21534 21534,按照字典序比较,先比较第一个数字,由于 2 2 2的字典序大于 1 1 1的字典序,因此 21534 > 12345 21534 > 12345 21534>12345。
方法;数组翻转。
思路与算法:
- 当我们把数组元素向右移动 k k k次后,尾部 k m o d n k\; mod\; n kmodn会移动到数组头部,而其余元素向后移动 k m o d n k\; mod\; n kmodn个位置。
- 这就给我们以启发:首先翻转将整个数组,这样尾部 k m o d n k\; mod\; n kmodn会翻转到头部;其次翻转区间 [ 0 , k m o d n − 1 ] [0,k\; mod\; n - 1] [0,kmodn−1]的元素和区间 [ k m o d n , n ] [k\; mod\; n,n] [kmodn,n]的元素,这样得到最终答案。