当前位置: 首页 > news >正文

LeetCode -- 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].




就是对给定的数组生成全排列。


思路:
本题主要是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 set
		var 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;
}


}


相关文章:

  • LeetCode -- Construct Binary Tree from Inorder and Postorder Traversal
  • 王小云:十年破译五部顶级密码
  • LeetCode -- Factorial Trailing Zeroes
  • LeetCode -- Gas Station
  • 山东大学王小云教授成功破解MD5
  • LeetCode -- Implement Trie (Prefix Tree)
  • 2009年的3G上网卡市场,华为将会领跑
  • LeetCode -- Kth Smallest Element in a BST
  • SQL2005CLR函数扩展-环比计算
  • LeetCode -- Majority Element
  • LeetCode -- Max Points on a Line
  • ArcGIS Server Java ADF 案例教程 17
  • LeetCode -- Maximal Square
  • ArcGIS Server Java ADF 案例教程 18
  • LeetCode -- Summary Ranges
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • 【EOS】Cleos基础
  • 【刷算法】求1+2+3+...+n
  • css的样式优先级
  • Fastjson的基本使用方法大全
  • java中具有继承关系的类及其对象初始化顺序
  • Koa2 之文件上传下载
  • React 快速上手 - 07 前端路由 react-router
  • Sublime Text 2/3 绑定Eclipse快捷键
  • vue数据传递--我有特殊的实现技巧
  • 得到一个数组中任意X个元素的所有组合 即C(n,m)
  • 给Prometheus造假数据的方法
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 聚簇索引和非聚簇索引
  • 聊聊hikari连接池的leakDetectionThreshold
  • 深入浅出Node.js
  • # 计算机视觉入门
  • #{} 和 ${}区别
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • $().each和$.each的区别
  • $forceUpdate()函数
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (1)Nginx简介和安装教程
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (k8s中)docker netty OOM问题记录
  • (Pytorch框架)神经网络输出维度调试,做出我们自己的网络来!!(详细教程~)
  • (附源码)ssm码农论坛 毕业设计 231126
  • (三)centos7案例实战—vmware虚拟机硬盘挂载与卸载
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程
  • **PHP分步表单提交思路(分页表单提交)
  • .[hudsonL@cock.li].mkp勒索病毒数据怎么处理|数据解密恢复
  • .Family_物联网
  • .NET Core Web APi类库如何内嵌运行?
  • .net 调用php,php 调用.net com组件 --
  • .NET/C# 编译期能确定的字符串会在字符串暂存池中不会被 GC 垃圾回收掉
  • ?.的用法
  • @EventListener注解使用说明
  • [ 2222 ]http://e.eqxiu.com/s/wJMf15Ku
  • [ solr入门 ] - 利用solrJ进行检索