字典序 Lexicographical Order

求下一个字典序的方法
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,按照字典式排序,它的下一个排列是什么?

  1. 2763541 (找最后一个正序35);
  2. 2763541 (找3后面比3大的最后一个数4);
  3. 2764531 (交换3,4的位置);
  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才能操作所有元素。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值