zoukankan      html  css  js  c++  java
  • 17. Subsets【medium】

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

     Notice
    • Elements in a subset must be in non-descending order.
    • The solution set must not contain duplicate subsets.
    Example

    If S = [1,2,3], a solution is:

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

    Can you do it in both recursively and iteratively?

    题意

    给定一个含不同整数的集合,返回其所有的子集

     注意事项

    子集中的元素排列必须是非降序的,解集必须不包含重复的子集

    解法一:

     1 class Solution {
     2 public:
     3     /*
     4      * @param nums: A set of numbers
     5      * @return: A list of lists
     6      */
     7     vector<vector<int>> subsets(vector<int> &nums) {
     8         // write your code here
     9         vector<vector<int> > results;
    10         vector<int> result;
    11         
    12         sort(nums.begin(), nums.end());
    13         
    14         helper(nums, 0, result, results);
    15         
    16         return results;
    17     }
    18     
    19     void helper(vector<int> &nums, int start, vector<int> & result, vector<vector<int> > & results)
    20     {
    21         results.push_back(result);
    22         
    23         for (int i = start; i < nums.size(); ++i) {
    24             result.push_back(nums[i]);
    25             
    26             helper(nums, i + 1, result, results);
    27             
    28             result.pop_back();
    29         }
    30     }
    31 };
  • 相关阅读:
    POJ 1754 Splay
    POJ 3481Double Queue Splay
    前缀表达式求值
    Treap(树堆):随机平衡二叉树实现
    Tarjian算法求强联通分量
    (转)priority_queue的用法
    001Angular2环境准备
    9.富客户端应用程序的线程
    8.信号
    7.线程的优先级
  • 原文地址:https://www.cnblogs.com/abc-begin/p/8320173.html
Copyright © 2011-2022 走看看