leetCode练习(31)
来源:互联网 发布:淘宝刷単用软件怎么样 编辑:程序博客网 时间:2024/06/07 05:05
问题:Next Permutation
难度:medium
问题描述:
Implement next permutation, which rearranges numbers into the lexicographically next greater permutation of numbers.
If such arrangement is not possible, it must rearrange it as the lowest possible order (ie, sorted in ascending order).
The replacement must be in-place, do not allocate extra memory.
Here are some examples. Inputs are in the left-hand column and its corresponding outputs are in the right-hand column.1,2,3
→ 1,3,2
3,2,1
→ 1,2,3
1,1,5
→ 1,5,1
本题是要求得x的下一个字典序,通过查阅资料,得到字典序的排序方式如下:
设P是1~n的一个全排列:p=p1p2......pn=p1p2......pj-1pjpj+1......pk-1pkpk+1......pn
1)从排列的右端开始,找出第一个比右边数字小的数字的序号j(j从左端开始计算),即 j=max{i|pi<pi+1}
2)在pj的右边的数字中,找出所有比pj大的数中最小的数字pk,即 k=max{i|pi>pj}(右边的数从右至左是递增的,因此k是所有大于pj的数字中序号最大者)
3)对换pj,pk
4)再将pj+1......pk-1pkpk+1......pn倒转得到排列p'=p1p2.....pj-1pjpn.....pk+1pkpk-1.....pj+1,这就是排列p的下一个排列。
由此可以通过此排序方式设计算法如下:
0 0
- leetCode练习(31)
- leetCode练习(7)
- leetCode练习(9)
- leetCode练习(2)
- leetCode练习(14)
- leetCode练习(3)
- leetCode练习(4)
- leetCode练习(19)
- leetCode练习(18)
- leetCode练习(5)
- leetCode练习(15)
- leetCode练习(20)
- leetCode练习(21)
- leetCode练习(16)
- leetCode练习(17)
- leetCode练习(11)
- leetCode练习(24)
- leetCode练习(22)
- 返回值的判断
- 第八天
- c++三目运算符的增强
- Hive知识点四(sql优化)
- Android开发之SeekBar
- leetCode练习(31)
- MFC中消息传递机制随笔
- C++的STL中向量(vector)的使用说明
- Torch 在OSX 10.11.6 下的安装
- Pycharm5注册方式
- 一条SQL 语句执行后返回2笔受影响--如果没有触发器,那就是点到"包括实际的执行计划"!
- 杂谈:dota鼻祖的血泪发展史-Pendragon事件
- C/C++ 变量的初始化
- 关于如何将Ubuntu系统中的GCC版本降级以适应matlab caffe安装。