leetcode46
- public class Solution {
- public IList<IList<int>> Permute(int[] nums)
- {
- IList<IList<int>> result = new List<IList<int>>();
- permute(result, nums, );
- return result;
- }
- private void permute(IList<IList<int>> result, int[] array, int start)
- {
- if (start >= array.Length)
- {
- List<int> current = new List<int>();
- foreach (int a in array)
- {
- current.Add(a);
- }
- result.Add(current);
- }
- else
- {
- for (int i = start; i < array.Length; i++)
- {
- swap(array, start, i);
- permute(result, array, start + );
- swap(array, start, i);
- }
- }
- }
- private void swap(int[] array, int i, int j)
- {
- int temp = array[i];
- array[i] = array[j];
- array[j] = temp;
- }
- }
https://leetcode.com/problems/permutations/#/solutions
经过学习和思考,采用另一种写法实现。更容易理解
- public class Solution
- {
- List<IList<int>> list = new List<IList<int>>();
- int N;
- private void BackTrack(List<int> records, List<int> save, int t)
- {
- if (t >= N)
- {
- var temp = new int[N];
- save.CopyTo(temp);
- list.Add(temp.ToList());
- return;
- }
- for (int i = ; i < records.Count; i++)
- {
- var current = records[i];
- save.Add(current);
- var notsave = records.Where(x => x != current).ToList();
- BackTrack(notsave, save, t + );
- save.Remove(current);
- }
- }
- public IList<IList<int>> Permute(int[] nums)
- {
- N = nums.Length;//初始化最大范围
- var records = nums.ToList();
- var save = new List<int>();
- BackTrack(records, save, );
- return list;
- }
- }
补充一个python的实现:
- class Solution:
- def dfs(self,nums,n,path,l,visited):
- if len(path) == n:
- l.append(path[:])
- else:
- if nums != None:
- for i in range(len(nums)):
- if visited[i] == :
- continue
- path.append(nums[i])
- visited[i] =
- self.dfs(nums,n,path,l,visited)
- visited[i] =
- path.pop(-)
- def permute(self, nums: 'List[int]') -> 'List[List[int]]':
- n = len(nums)
- path = list()
- l = list()
- visited = [] * n
- self.dfs(nums,n,path,l,visited)
- return l
leetcode46的更多相关文章
- LeetCode46,47 Permutations, Permutations II
题目: LeetCode46 I Given a collection of distinct numbers, return all possible permutations. (Medium) ...
- LeetCode46 回溯算法求全排列,这次是真全排列
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是LeetCode的26篇文章,我们来实战一下全排列问题. 在之前的文章当中,我们讲过八皇后.回溯法,也提到了全排列,但是毕竟没有真正写 ...
- [Swift]LeetCode46. 全排列 | Permutations
Given a collection of distinct integers, return all possible permutations. Example: Input: [1,2,3] O ...
- leetcode46. Permutations 、47. Permutations II、 剑指offer字符串的排列
字符串排列和PermutationsII差不多 Permutations第一种解法: 这种方法从0开始遍历,通过visited来存储是否被访问到,level代表每次已经存储了多少个数字 class S ...
- LeetCode46. Permutations
Given a collection of distinct integers, return all possible permutations. Example: Input: [1,2,3] O ...
- Leetcode46. Permutations全排列
给定一个没有重复数字的序列,返回其所有可能的全排列. 示例: 输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1 ...
- leetcode & lintcode for bug-free
刷题备忘录,for bug-free leetcode 396. Rotate Function 题意: Given an array of integers A and let n to be it ...
- leetcode & lintcode 题解
刷题备忘录,for bug-free 招行面试题--求无序数组最长连续序列的长度,这里连续指的是值连续--间隔为1,并不是数值的位置连续 问题: 给出一个未排序的整数数组,找出最长的连续元素序列的长度 ...
- LeetCode 47. 全排列 II(Permutations II)
题目描述 给定一个可包含重复数字的序列,返回所有不重复的全排列. 示例: 输入: [1,1,2] 输出: [ [1,1,2], [1,2,1], [2,1,1] ] 解题思路 类似于LeetCode4 ...
随机推荐
- Codeforces Round #324 (Div. 2) (哥德巴赫猜想)
题目:http://codeforces.com/problemset/problem/584/D 思路: 关于偶数的哥德巴赫猜想:任一大于2的偶数都可写成两个素数之和. 关于奇数的哥德巴赫猜想:任一 ...
- servlet邮箱激活验证实例含代码
也有很多人本来有机会的,他们都拒绝了,不想让自己太累,太麻烦.或者中途被情绪所左右,半途而废了. 成长是有代价的,同样悠闲也是有代价的. 流程: 用户填写相关信息,点击注册按钮 系统先将用户记录保存到 ...
- 结构体变量的 extern 使用方法,转--
要求如下,在.h文件中这样定义: typedef struct typFNT_GB16 // 汉字字模数据结构 { signed ]; // 汉字内码索引 ]; ...
- 外网访问SQLServer数据库holer实现
外网访问内网SQLServer数据库 内网主机上安装了SQLServer数据库,只能在局域网内访问,怎样从公网也能访问本地SQLServer数据库? 本文将介绍使用holer实现的具体步骤. 1. 准 ...
- 全文检索的Demo
用到lucene版本为6.3.0版本,利用的分词器为IKAnalyzer分词器,该分词对中文有较好的支持.关于支持lucene的6.xx以上的IkAnalyzer分词jar包下载地址:https:// ...
- JS实现数组的相减操作
/** * 数组相减的方法 * @param {Array} a * @param {Array} b */ function arrSubtraction(a, b) { if (!a || !b ...
- 蓝牙协议分析(4)_IPv6 Over BLE介绍
1. 前言 蓝牙是个奇葩的家伙:它总是以后来者的身份出现,很喜欢打仗,而且还不落下风(有点像某讯的风格).90年代末期和Wi-Fi的无线标准之争如此,当前和802.15.4系(ZigBee.RF4CE ...
- Windows 应用商店无法下载---启动更新
今天想在应用商店下载东西,但是以直没成功,查看原因结果是因为我的Windows自动更新关了. 百度,如何打开自动更新,要打开本地组策略编辑器,但是我是Windows家庭版,,,没有这个东西,, 最后, ...
- 源代码安装-非ROOT用户安装软件的方法
0. 前言 如果你没有sudo权限,则很多程序是无法使用别人编译好的文件安装的. 还有时候,没有对应你的主机配置的安装包,这时候需要我们自己下载最原始的源代码,然后进行编译安装. 这样安装的程序 ...
- JavaStudy——Java之自动拆箱与自动装箱
java基本类型介绍 java中,基本数据类型一共有8种,详细信息如下表: 类型 大小 范围 默认值 byte 8 -128 - 127 0 short 16 -32768 - 32768 0 int ...