解题思路:
本题要求字典顺序的全排列,我们如果简化题目的意思,其实就是将从左往右1234…依次递增的顺序,经过一系列的排列之后,转换成…4321依次递减的顺序
然后我们开始观察:
1 2 3 4
1 2 4 3
1 3 2 4
1 3 4 2
1 4 2 3
1 4 3 2
2 1 3 4
1.所有的变化都是从尾巴开始的,那么说明我们的算法需要从尾部往前去刷新
2.鉴于我们的简化题意,其实我们每次寻找的都是如果对应位置不是递减顺序,我们就把它改成递减顺序
3.如果我们单单只是swap我们寻找到的递减顺序的话,比如 1 2 3 4 —> 1 2 4 3 貌似很正确,但是如果我们量化我们的样本,会发现完全不一样,我们可以看1 2 4 3 —> 1 3 2 4 而不是 1 4 2 3,那么我们少了什么?
4.仔细回忆我们人脑写全排序的时候的过程我们可以发现,一旦发现递减顺序,其实我们是从尾部开始向前寻找第一个大于当前位置数字的数,然后交换他们,即1 2 4 3 —> 1 3 4 2,但是这还不是答案,因为我们还在脑子里做了一个翻转,从替换位往后做一个reverse,就是我们的答案即1 2 4 3 —> 1 3 4 2 —> 1 3 2 4
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。





































苏公安网备 32011402010933号