求下一个字典序的方法
1.求 i = max{j | p[j – 1] < p[j]} (找最后一个正序);
2.求 j = max{k| p[i – 1] < p[k]} (找最后大于 p[i – 1] 的);
3.交换 p[i – 1] 与 p[j]得到 p[1] … p[i-2] p[j] p[i] p[i+1] … p[j-1] p[i-1] p[j+1] … p[n];
4.反转 p[j] 后面的数得到 p[1] … p[i-2] p[j] p[n] … p[j+1] p[i-1] p[j-1] … p[i]。
例如:设有排列(p)=2763541,按照字典式排序,它的下一个排列是什么?
- 2763541 (找最后一个正序35);
- 2763541 (找3后面比3大的最后一个数4);
- 2764531 (交换3,4的位置);
- 2764135 (把4后面的5,3,1反转)。
Python反转List的三种方法
现有a = [1,2,3,4,5],现需要进行对a进行反转
方法1:list(reversed(a))
reversed(a)返回的是迭代器,所以前面加个list转换为list
方法2:sorted(a,reverse=True)
方法3:a[: :-1]
其中[::-1]代表从后向前取值,每次步进值为1
注意:
对整个List进行反转操作时,用List[:]而不是List本身(一个指针),这样调用List才能操作所有元素。