zoukankan      html  css  js  c++  java
  • [LeetCode][Java] Subsets

    题目:

    Given a set of distinct integers, 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,3], a solution is:

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

    题意:

    给定一个由不同数字组成的数组nums,返回这个数组中的全部的子集。

    注意:
            1.子集中的元素必须是升序排列

            2.终于的结果中不能包括反复的子集。

    算法分析:

           结合上一题《Combinations》的方法,将上一题作为子函数来使用。

     

    AC代码:

    <span style="font-family:Microsoft YaHei;font-size:12px;">public class Solution 
    {
        public ArrayList<ArrayList<Integer>> subsets(int[] nums) 
        {
            ArrayList<ArrayList<Integer>> fres = new ArrayList<ArrayList<Integer>>();
            ArrayList<Integer> flist= new ArrayList<Integer>();
            Arrays.sort(nums);
            fres.add(flist);
            for(int i=1;i<=nums.length;i++)
            {
            	ArrayList<ArrayList<Integer>> sres = new ArrayList<ArrayList<Integer>>();
            	sres=combine(nums, i);
            	fres.addAll(sres);
            }
            return fres;
        }
        public static ArrayList<ArrayList<Integer>> combine(int nums[], int k)
        { 
            ArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>>();
            if(nums.length<=0 || nums.length<k) 
             return res; 
            helper(nums,k,0,new ArrayList<Integer>(), res);
            return res;
        }
        private static void helper(int nums[], int k, int start, ArrayList<Integer> item, ArrayList<ArrayList<Integer>> res)
        { 
            if(item.size()==k) 
            { 
                res.add(new ArrayList<Integer>(item));
                return; 
            } 
            for(int i=start;i<nums.length;i++) // try each possibility number in current position 
            { 
                item.add(nums[i]); 
                helper(nums,k,i+1,item,res); // after selecting number for current position, process next position  
                item.remove(item.size()-1); // clear the current position to try next possible number  
            } 
        }
    }</span>


  • 相关阅读:
    [转]windows下mysql配置文件my.ini的位置
    [转]Oracle 11g不能导出空表的多种解决方法
    [转]ORACLE WITH AS 用法(相当于查询开始前构造临时表,提高效率)
    [转]基于WordPress的微信小程序支付功能开发
    从数据库优化到治病(2)治好心悸过程
    算命三十多年的资深命理师的人生感悟!
    从高维度看世界
    鸾书精华
    实用QPS和TPS高的高效分析方法
    windows 安装 mysql
  • 原文地址:https://www.cnblogs.com/gccbuaa/p/6817044.html
Copyright © 2011-2022 走看看