• LeetCode78. 子集


    题目

    给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。

    分析

    代码

     1 class Solution {
     2 public:
     3     vector<int>path;
     4     vector<vector<int>>res;
     5 
     6     void backtracking(vector<int>nums,int startIndex){
     7         res.push_back(path);  
     8         //每进行一次递归,要保存上一层递归结果,相当于在搜索树往下一层搜索时,要保存上层
     9         if(startIndex == nums.size()) {
    10             return;
    11         }
    12         for(int i = startIndex;i < nums.size();i++){
    13             path.push_back(nums[i]);
    14             backtracking(nums,i+1);
    15             path.pop_back();
    16         }
    17     }
    18     vector<vector<int>> subsets(vector<int>& nums) {    
    19         backtracking(nums,0);
    20         return res;
    21     }
    22 };

    总结

    这是回溯问题的子集问题。基本还是想象搜索树的样子,模板来做。注意 在何处将结果存入 res中? 应该是回溯函数的顶部,因为要搜索到每一层要将结果存入,这点不同于之前回溯的组合、分割问题(它们是搜索的叶子结点再存放)。

  • 相关阅读:
    loadrunner测试结果分析
    规范的测试流程
    B/S架构与C/S架构的区别
    Jemter性能测试
    Android Monkey压力测试介绍
    APP测试总结
    APP测试要点
    数据库常用的操作命令
    Mysql删除表格之后,进行恢复
    Android反编译工具
  • 原文地址:https://www.cnblogs.com/fresh-coder/p/14357642.html
Copyright © 2020-2023  润新知