LeetCode -- Permutations
来源:互联网 发布:python wind 15分钟 编辑:程序博客网 时间:2024/06/11 20:53
题目描述:
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].
就是对给定的数组生成全排列。
思路:
本题主要是Back tracking 的一个基本应用。
1.对于nums的每个元素nums[i] ,i∈[0,n) :
2.拿掉nums[i],对子数组n进行递归:
2.1当nums只有两个元素时,直接返回它们的排列,即{num[0],nums[1]}和{nums[1],nums[0]}
2.2得到递归后的子集subSet,遍历subSet,把拿掉的nums[i]放在子集的第一位
3.把nums[i]放回去
实现代码:
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].
就是对给定的数组生成全排列。
思路:
本题主要是Back tracking 的一个基本应用。
1.对于nums的每个元素nums[i] ,i∈[0,n) :
2.拿掉nums[i],对子数组n进行递归:
2.1当nums只有两个元素时,直接返回它们的排列,即{num[0],nums[1]}和{nums[1],nums[0]}
2.2得到递归后的子集subSet,遍历subSet,把拿掉的nums[i]放在子集的第一位
3.把nums[i]放回去
实现代码:
public class Solution { public IList<IList<int>> Permute(int[] nums) { return Collect(nums.ToList());}private IList<IList<int>> Collect(IList<int> nums){if(nums.Count <= 1){return new List<IList<int>>(){new List<int>(nums)};}if(nums.Count == 2){return new List<IList<int>>(){new List<int>(){nums[0],nums[1]},new List<int>(){nums[1],nums[0]}};}var newSet = new List<IList<int>>();for(var i = 0;i < nums.Count; i++){// take out nums[i] and put at last for each sub setvar x = nums[i];nums.RemoveAt(i);var subSet = Collect(nums);for(var k = 0;k < subSet.Count; k++){subSet[k].Add(x);newSet.Add(subSet[k]);}nums.Insert(i, x);}return newSet;}}
1 0
- 【LeetCode】Permutations && Permutations II
- leetcode: Permutations/Permutations II
- leetcode Permutations & Permutations II
- [Leetcode]Permutations && Permutations II
- LeetCode: Permutations
- LeetCode: Permutations
- [Leetcode] Permutations
- [LeetCode] Permutations
- Leetcode: Permutations
- [Leetcode] Permutations
- [Leetcode] Permutations
- [LeetCode]Permutations
- LeetCode-Permutations
- [leetcode] permutations
- LeetCode - Permutations
- Leetcode: Permutations
- 【leetcode】Permutations
- 【LeetCode】Permutations
- iOS8.0 之后UIAlertView和UIActionSheet的创建方式的新变化
- 1.v4l2 framework框架
- Android bluedroid模块间关系
- 苹果6s正式销售,国内多渠道可购买
- android sdk 打包混淆
- LeetCode -- Permutations
- linux 部署项目
- svn 命令行下常用的几个命令
- 基础知识(八)python文件操作相关函数
- Log4j不修改代码情况下桥接转换logback
- ONE PIECE ------ jQuery
- Android音频实时传输与播放(一):写在开头
- Cocos2dx的多分辨率支持
- 欢迎使用CSDN-markdown编辑器