zoukankan      html  css  js  c++  java
  • [LeetCode] 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],
      []
    ]

    解题思路:

     1 class Solution {
     2 public:
     3     vector<vector<int>> subsets(vector<int>& nums) {
     4         vector<vector<int>> result;
     5         if (nums.size() == 0) {
     6             return result;
     7         }
     8         
     9         sort(nums.begin(), nums.end());
    10         vector<int> elem;
    11         
    12         for (int i = 0; i <= nums.size(); ++i) {
    13             subsets(nums, i, 0, result, elem);
    14         }
    15         
    16         return result;
    17     }
    18 private:
    19     void subsets(const vector<int> &nums, int len, int cur, vector<vector<int>> &result, vector<int> &elem) {
    20         if (elem.size() == len) {
    21             result.push_back(elem);
    22             return;
    23         }
    24         
    25         for (int i = cur; i < nums.size(); ++i) {
    26             elem.push_back(nums[i]);
    27             subsets(nums, len, i + 1, result, elem);
    28             elem.pop_back();
    29         }
    30     }
    31 };
  • 相关阅读:
    BOZJ2200: [Usaco2011 Jan]道路和航线
    poj3662
    网络流
    最短路
    约瑟夫环
    二分图匹配
    HDU 3938 Portal
    背包dp专题训练
    noip2013day1模拟赛
    2017.10.24:lca专题系列
  • 原文地址:https://www.cnblogs.com/skycore/p/5321518.html
Copyright © 2011-2022 走看看