Permutations
来源:互联网 发布:python3 socket编程 编辑:程序博客网 时间:2024/06/07 02:24
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
class Solution: # @param num, a list of integer # @return a list of lists of integers def permute(self, num): ret=[num] while True: new_num = self.nextPermutation(ret[-1]) if new_num != num: ret.append(new_num) else: break return ret # @param num, a list of integer # @return a list of integer def nextPermutation(self, num): num_copy=num[:] if len(num_copy)<=1: return num_copy #right to left ,find partition index partition_index = -1 for i in range(len(num_copy)-2,-1,-1): if num_copy[i] < num_copy[i+1]: partition_index=i break #could not find if partition_index==-1: num_copy.reverse() return num_copy #right to left ,find change index change_index=-1 for i in range(len(num_copy)-1,-1,-1): if num_copy[i] > num_copy[partition_index]: change_index=i break #swap num_copy[partition_index],num_copy[change_index]=num_copy[change_index],num_copy[partition_index] num_copy[partition_index+1:] = reversed(num_copy[partition_index+1:]) return num_copy
0 0
- Permutations
- Permutations
- Permutations
- Permutations
- Permutations
- Permutations
- Permutations
- Permutations
- Permutations
- Permutations
- Permutations
- Permutations
- Permutations
- Permutations
- Permutations
- Permutations
- Permutations
- Permutations
- 浅谈Fragment
- 希尔排序的总结2
- MAC Mysql 解决中文乱码
- 什么是Bean
- xib使用
- Permutations
- HDU 2509 反尼姆博弈
- Python学习笔记7:函数对象及函数对象作参数
- linux source命令
- C++中引用与指针的区别(详细介绍)
- 由一个问题引发的思考——关于数据库的外键约束
- Linux rm命令详解
- 主键关联和唯一主键
- Netty-Mina深入学习与对比(一)