• 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 class Solution {
     2 public:
     3     void help(vector<vector<int> >& res, vector<int>& nums, vector<int>& cur, int st)
     4     {
     5         if (st == nums.size())
     6             return;
     7         for (int i = st, n = nums.size(); i < n; i++)
     8         {
     9             cur.push_back(nums[i]);
    10             res.push_back(cur);
    11             help(res, nums, cur, i + 1);
    12             cur.erase(cur.begin() + cur.size() - 1);
    13         }
    14     }
    15     vector<vector<int>> subsets(vector<int>& nums) {
    16         sort(nums.begin(), nums.end(), less<int>());
    17         vector<vector<int> > res;
    18         vector<int> tem;
    19         res.push_back(tem);
    20         help(res, nums, tem, 0);
    21         return res;
    22     }
    23 };
  • 相关阅读:
    Qt下设置QLabel字体的大小和颜色
    C#之隐式与显示类型转换
    .NET入行之工作前
    再见2016
    C#之DataTable转List与List转Datatable
    .NET入行之工作后
    js判断是pc端还是移动端
    .net中的ContextSwitchDeadlock异常
    今天,我的博客开通啦
    ASP.NET的页面生命周期
  • 原文地址:https://www.cnblogs.com/fenshen371/p/4952872.html
Copyright © 2020-2023  润新知