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)
更多相关文章
一周排行
  • Cacti安装与配置 安装Cacti之前安装系统初始话库文件 yum -y install gcc gcc gcc-c++ autoconf libjpeg libjpeg-devel libpnglibpng-de ...
  • 如果对opencart感兴趣,可以加入opencart中国群:282797742进行讨论 功能:根据支付方式的不同,可以设定享受不同的订单折扣优惠.可以设定是固定金额还是百分比,可以选择顾客分组(User Group ...
  • 快手4.0 (KSCAD)
    快手 4.0 (KSCAD) 是一款简单易用的矢量绘图软件,其功能和Visio类似,可以绘
  • 最近一个星期的主要任务是研究存储设备与网络,第一次调试MDS9124,第一次感受了FC网络是怎么通的,感觉存储技术非常有趣.等我把手边的BT5研究完后,我会开始全力研究存储技术和vsphere5. 今天共享的这个部分 ...
  • 链表排序,要求使用 O(nlgn) 时间,常量空间. 使用归并的思路 /** * Definition for singly-linked list. * struct ListNode { * int val; *
  • 课程大纲: 1. shell特性 命令历史 history !! !$ !n !字符 Tab 键可以补全文件路径或者命令 alias a="b" unalias a 通配符 *匹配零个或多个字符 ...
  • 貌似是道水题.TLE了几次.把所有的输入输出改成scanf 和 printf ,有吧队列改成了数组模拟.然后就AC 了.2.... Description: MR.DOG 在找工作的过程中呢.遇见了这样一个问题.有n
  • "台风来的时候,猪都能飞上天."但台风过后,是作为"猪"掉下来,还是变成"鹰"继续翺翔,这成了电子商务领域的CEO值得深思的问题.对于当前的电子商务市场,中 ...
  • 状态 描述 INCOMPLETE 1.正在输入,尚未提交审批,可以修改: 2.可以删除,PO删除后对应的PR回归到没有做PO状态. IN PROCESS 已经提交,等待审批,工作流正在处理,在Purchase Ord
  • Python的method可以设置默认参数, 默认参数如果是可变的类型, 比如list, map等, 将会影响所有的该方法调用.  下面是一个简单的例子 def f(a=None, l=[]): if not a: ...