设为首页 加入收藏

TOP

LeetCode -- Subsets II
2015-11-21 00:55:00 来源: 作者: 【 】 浏览:1
Tags:LeetCode Subsets
题目描述:


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
  
   > SubsetsWithDup(int[] nums) 
    {
    	Dictionary
   
    > result = new Dictionary
    
     >(); Travel(nums.ToList() ,new List
     
      (), 0, result); return result.Values.ToList(); } private void Travel(IList
      
        nums, IList
       
         arr, int index, Dictionary
        
         > result) { var k = K(ref arr); if(!result.ContainsKey(k)){ result.Add(k, new List
         
          (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
          
            arr){ arr = arr.OrderBy(x=>x).ToList(); return string.Join(,, arr); } }
          
         
        
       
      
     
    
   
  
?
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇POI操作Excel设置前景色背景色 下一篇POJ 1625 Censored! (AC自动机 +..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: