码迷,mamicode.com
首页 > 其他好文 > 详细

78.Subsets

时间:2016-09-17 08:22:39      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:

Given a set of distinct integers, nums, return all possible subsets.

Note: The solution set must not contain duplicate subsets.

For example,
If nums = [1,2,3], a solution is:

[
  [3],
  [1],
  [2],
  [1,2,3],
  [1,3],
  [2,3],
  [1,2],
  []
]
昨天中秋加上头非常痛,歇了一天。早上起来看了个cse学生的新闻,又滚回被窝里睡了好久,准备再歇一天的。打开看了看一亩三分地,别人99道题
就能刷进linkedin,虽然基础可能差蛮多但还是非常想去投一投简历试试的。过了九月就大批招聘来了,一定要抓紧时间刷刷题看看书。没有书
上知识的支撑只看公开课视频感觉还是很虚没底。

思路:dfs+backtracking。对节点的操作需要注意:1.碰到节点就记录到result:即为pos<=nums.length 2.dps的方向,尽头(回溯点):pos==nums.length
每一层的操作用pos来记录,防重复。
画graph可以深入理解不同的dps,各种的对节点操作。

public class Solution {
    public List<List<Integer>> subsets(int[] nums) {
        List<List<Integer>> res=new ArrayList<>();
        List<Integer> check=new ArrayList<>();
        dps(nums,res,check,0);
        return res;
    }
    public void dps(int[] nums,List<List<Integer>> res,List<Integer> list,int pos)
    {
        if(pos<=nums.length)
        {
            res.add(new ArrayList<Integer>(list));
        }
        if(pos==nums.length)
        {
            return;
        }
        for(int i=pos;i<nums.length;i++)
        {
            list.add(nums[i]);
            dps(nums,res,list,++pos);
            list.remove(list.size()-1);
        }
    }
        
    }

 

78.Subsets

标签:

原文地址:http://www.cnblogs.com/Machelsky/p/5877871.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!