LeetcodePython46: Permutations

# -*- coding: utf8 -*-
'''
__author__ = [email protected]'

46: Permutations
https://leetcode.com/problems/permutations/

Given a collection of numbers, return all possible permutations.
For example,
[1,2,3] have the following permutations:
[1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], and [3,2,1].

=== Comments by Dabay===
DFS.
注意的问题是,
加入到res结果集中的时候,做一个l的拷贝。
DSF之后恢复l的状态。
'''

class Solution:
# @param num, a list of integer
# @return a list of lists of integers
def permute(self, num):
res = []
self.DFS(res, [], num)
return res

def DFS(self, res, l, nums):
if len(nums) == 0:
res.append(list(l))
for i in xrange(len(nums)):
l.append(nums[i])
self.DFS(res, l, nums[:i] + nums[i+1:])
l.pop()

def main():
sol = Solution()
num = [1, 2, 3]
print sol.permute(num)

if __name__ == "__main__":
import time
start = time.clock()
main()
print "%s sec" % (time.clock() - start)
更多相关文章
一周排行
  • 今天给大家说一下如果用jQuery获取动态添加的元素,通常如果你在网页上利用jQuery添加一个元素,那么用平常的jQuery获取元素的方法无效的获取不到的.可以用以下的方法获取动态元素!假设我们现在需要获取网页动态
  • 


    		    keepalived+lvs實現http的高可用性
    实验前提: 1.本次实验作者使用的是RHEL5.8的32位系统平台. 2.实验所需软件为i
  • Golang中也有实用的泛型编程模板.如map.据Go官方团队称,其实现为Hash表,而非类似cpp或Java的红黑树.所以理论上速度更能快上几个等级(Hash与红黑树的效率对比可以看我的文章C++中各种<st ...
  • 


    		    Java網路編程從入門到精通(4):DNS緩存
    在通过DNS查找域名的过程中,可能会经过多台中间DNS服务器才能找到指定的域名,因此,在D
  • 套接字編程(VC_Win32)
    简介(源于维基) Berkeley套接字(也作BSD套接字应用程序接口)刚开始是4.2BS
  • 寻找循环节求lcm够了,如果答案是12345应该输出1.这是下一个洞. #include<iostream> #include<cstdio> #include<cstring> ...
  • 通常在Tomcat bin目录下用startup.bat启动Tomcat ,启动窗口显示的Title是Tomcat 如果遇到一个服务器上多个Tomcat的话就会容易混淆.更改方法如下: 1 在bin目录下找到cata
  • 1.transform:rotate(-10deg) skew(20deg,10deg) scaling(2/1,2) translate/移动(100px,200px)  2.transform:matrix(ro
  • 


    		    Server2003PDC遷移到Server2008R2BDC
    环境描述: 1.PDC:Windows Server 2003: 2.BDC:Window
  • 比如在系统中date这个环境变量的值为 3 星期六 那%date:~0,4% 表示从左向右指针向右偏0位,然后从指针偏移到的位置开始提取4位字符,结果是2011 %date:~5,2% 表示指针从左