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

LeetCode -- Subsets II

题目描述:


Given a collection of integers that might contain duplicates, nums, return all possible subsets.


Note:
Elements in a subset must be in non-descending order.
The solution set must not contain duplicate subsets.
For example,
If nums = [1,2,2], a solution is:


[
  [2],
  [1],
  [1,2,2],
  [2,2],
  [1,2],
  []
]


思路:
又是一道backtracking题目。
本题与Combination Sum极为类似。


需要注意去重,使用哈希来存升序key。


实现代码:


public class Solution {
    public IList<IList<int>> SubsetsWithDup(int[] nums) 
    {
    	Dictionary<string, IList<int>> result = new Dictionary<string, IList<int>>();
    	Travel(nums.ToList() ,new List<int>(), 0, result);
    	
    	return result.Values.ToList();
    }


private void Travel(IList<int> nums, IList<int> arr, int index, Dictionary<string , IList<int>> result)
{
	var k = K(ref arr);
	if(!result.ContainsKey(k)){
		result.Add(k, new List<int>(arr));
	}
	
	for(var i = index ;i < nums.Count; i++){
		arr.Add(nums[i]);
		Travel(nums, arr, i + 1, result);
		arr.Remove(nums[i]);
	}
}


private string K(ref IList<int> arr){
	arr = arr.OrderBy(x=>x).ToList();
	return string.Join(",", arr);
}


}


相关文章:

  • WCDMA与CDMA2000网络结构比较
  • LeetCode -- Integer to English Words
  • WiMAX组网技术与解决方案
  • LeetCode -- Sum Root to Leaf Numbers
  • 移动设备管理(MDM)与OMA(OTA)DM协议向导(三)——AAA服务器
  • LeetCode -- Surrounded Regions
  • LeetCode -- Triangle
  • Nebula3中的骨骼动画: Animation子系统
  • LeetCode -- Ugly Number II
  • LeetCode -- Ugly Number
  • vim 显示行号、语法高亮、自动缩进的设置
  • LeetCode -- Linked List cycle
  • 根据textbox中的值,改变dropdownlist的选项
  • LeetCode -- Basic Calculator II
  • 完整SQL分页存储过程(支持多表联接)
  • Django 博客开发教程 8 - 博客文章详情页
  • javascript面向对象之创建对象
  • JWT究竟是什么呢?
  • PV统计优化设计
  • Python - 闭包Closure
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • vue脚手架vue-cli
  • 二维平面内的碰撞检测【一】
  • 前端面试之CSS3新特性
  • 入职第二天:使用koa搭建node server是种怎样的体验
  • 使用 Xcode 的 Target 区分开发和生产环境
  • 思否第一天
  • 通过几道题目学习二叉搜索树
  • 云大使推广中的常见热门问题
  • ​linux启动进程的方式
  • ()、[]、{}、(())、[[]]命令替换
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (6)设计一个TimeMap
  • (Java)【深基9.例1】选举学生会
  • (MATLAB)第五章-矩阵运算
  • (poj1.3.2)1791(构造法模拟)
  • (windows2012共享文件夹和防火墙设置
  • (WSI分类)WSI分类文献小综述 2024
  • (zhuan) 一些RL的文献(及笔记)
  • (笔试题)分解质因式
  • (七)Java对象在Hibernate持久化层的状态
  • (七)Knockout 创建自定义绑定
  • (强烈推荐)移动端音视频从零到上手(下)
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (五)网络优化与超参数选择--九五小庞
  • (转) SpringBoot:使用spring-boot-devtools进行热部署以及不生效的问题解决
  • .net core 控制台应用程序读取配置文件app.config
  • .NET 实现 NTFS 文件系统的硬链接 mklink /J(Junction)
  • .NET 中选择合适的文件打开模式(CreateNew, Create, Open, OpenOrCreate, Truncate, Append)
  • []我的函数库
  • [CSS] 点击事件触发的动画
  • [Hibernate] - Fetching strategies
  • [IE技巧] 让IE 以全屏模式启动
  • [JS真好玩] 掘金创作者必备: 监控每天是谁取关了你?
  • [objective-c]关于KVC--KVO--KVB