@author: ZZQ

@software: PyCharm

@file: permute.py

@time: 2018/11/15 19:42

要求:给定一个没有重复数字的序列,返回其所有可能的全排列。

示例:

输入: [1,2,3]

输出:

[

[1,2,3],

[1,3,2],

[2,1,3],

[2,3,1],

[3,1,2],

[3,2,1]

]

import copy

"""
思路一: DFS,去掉不满足条件的排列
"""
class Solution():
def __init__(self):
pass def permute(self, nums):
"""
:type nums: List[int]
:rtype: List[List[int]]
"""
ans = []
temp_ans = []
length = len(nums)
cur_length = 0
self.dfs(temp_ans, nums, cur_length, length, ans)
return ans def dfs(self, temp_ans, nums, cur_length, length, ans):
if cur_length == length:
tt_ans = copy.deepcopy(temp_ans)
ans.append(tt_ans)
else:
for i in range(length):
if nums[i] not in temp_ans:
temp_ans.append(nums[i])
self.dfs(temp_ans, nums, cur_length+1, length, ans)
temp_ans.pop() """
思路二: 交换元素+DFS
"""
class Solution2():
def __init__(self):
pass def permute(self, nums):
"""
:type nums: List[int]
:rtype: List[List[int]]
"""
nums_len = len(nums)
ans = []
if nums_len == 0 or nums == []:
return []
self.exchange(nums, 0, nums_len, ans) # 采用前后元素交换的办法,dfs解题
return ans def exchange(self, nums, i, len, ans):
if i == len-1: # 将当前数组加到结果集中
temp_list = []
for j in range(len):
temp_list.append(nums[j])
ans.append(temp_list)
return
# 将当前位置的数跟后面的数交换,并搜索解
for j in range(i, len):
temp = nums[i]
nums[i] = nums[j]
nums[j] = temp
self.exchange(nums, i+1, len, ans)
temp = nums[i]
nums[i] = nums[j]
nums[j] = temp

Leetcode题库——46.全排列的更多相关文章

  1. Leetcode题库——47.全排列II

    @author: ZZQ @software: PyCharm @file: permuteUnique.py @time: 2018/11/16 13:34 要求:给定一个可包含重复数字的序列,返回 ...

  2. leetcode题库

    leetcode题库 #题名题解通过率难度出现频率  1 两数之和     46.5%简单2 两数相加     35.5%中等3 无重复字符的最长子串     31.1%中等4 寻找两个有序数组的中位 ...

  3. leetcode题库练习_数组中重复的数字

    题目:数组中重复的数字 找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次 ...

  4. leetcode题库解答源码(python3)

    下面和大家分享本人在leetcode上已经ace的题目源码(python3): 本人会持续更新!- class Leetcode_Solution(object): def twoSum_1(self ...

  5. LeetCode题库整理(自学整理)

    1. Two Sum 两数之和       来源:力扣(LeetCode) 题目:给定一个整数数组和一个目标值,找出数组中和为目标值的两个数.你可以假设每个输入只对应一种答案,且同样的元素不能被重复利 ...

  6. LeetCode题库13. 罗马数字转整数(c++实现)

    问题描述: 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 II  ...

  7. Leetcode题库——36.有效的数独

    @author: ZZQ @software: PyCharm @file: leetcode36_isValidSudoku.py @time: 2018/11/19 19:27 要求:判断一个 9 ...

  8. Leetcode题库——49.字母异位词分组【##】

    @author: ZZQ @software: PyCharm @file: leetcode49_groupAnagrams.py @time: 2018/11/19 13:18 要求:给定一个字符 ...

  9. Leetcode题库——48.旋转图像

    @author: ZZQ @software: PyCharm @file: rotate.py @time: 2018/11/16 15:41 要求:给定一个 n × n 的二维矩阵表示一个图像.将 ...

随机推荐

  1. [python]关于在python中模块导入问题追加总结

    [背景] 最近在写程序时,我使用的eclipse编辑器运行都没有问题,然后部署到自动化环境上却偏偏报找不到相应模块问题,现在对该问题在之前的贴子上追加总结 原帖子:[python]关于python中模 ...

  2. HTML标签之marquee

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/zkn_CS_DN_2013/article/details/25229719 <html> ...

  3. Spark项目之电商用户行为分析大数据平台之(十)IDEA项目搭建及工具类介绍

    一.创建Maven项目 创建项目,名称为LogAnalysis 二.常用工具类 2.1 配置管理组建 ConfigurationManager.java import java.io.InputStr ...

  4. Docker技术入门与实战 第二版-学习笔记-10-Docker Machine 项目-2-driver

    1>使用的driver 1〉generic 使用带有SSH的现有VM/主机创建机器. 如果你使用的是机器不直接支持的provider,或者希望导入现有主机以允许Docker Machine进行管 ...

  5. Python2.7-argparse

    argparse模块,用于方便地编写用户友好的命令行接口,可以自动生成帮助信息,用法信息和错误处理 1.模块对象 1.1 ArgumentParser 对象 1.1.1 初始化构建类:Argument ...

  6. mybatis的一对一,一对多查询,延迟加载,缓存介绍

    一对一查询 需求 查询订单信息关联查询用户信息 sql语句 /*通过orders关联查询用户使用user_id一个外键,只能关联查询出一条用户记录就可以使用内连接*/ SELECT orders.*, ...

  7. POJ1127 Jack Straws

    给你一些线段,求出哪些线段是相连的,哪些是不相连的.相连包括间接相连,即这两条线段本身不直接相连,而是通过其它线段的连接而间接相连. 线段相交+并查集 这里主要说如何判断线段相交:快速排斥试验+跨立试 ...

  8. (转)Centos7 修改硬件时间和系统时间

    查看硬件时间 [root@localhost ~]# hwclock --show Tue 13 Jun 2017 02:11:12 AM CST -0.848845 seconds 1 2 可以看出 ...

  9. odoo字段

    OpenERP对象字段定义的详解 4 OpenERP对象支持的字段类型有, 基础类型:char, text, boolean, integer, float, date, time, datetime ...

  10. Delphi 10.3 Rio + iOS 12.1 SDK 编译错误 "libcharset.1.dylib"

    环境版本: Delphi 10.3 Rio iOS 12.1 SDK Xcode 10.1 (10B61) 错误讯息:[DCC Error] E2597 ld: file not found: /us ...