当前位置: 首页 > news >正文

外包公司 网站建设 深圳专门做cg视频网站

外包公司 网站建设 深圳,专门做cg视频网站,新媒体 网站建设,iis7 网站404错误信息食用指南:本文为作者刷题中认为有必要记录的题目 前置知识:回溯法经典问题之组合 ♈️今日夜电波:想着你—郭顶 1:09 ━━━━━━️💟──────── 4:15 …

                                        食用指南:本文为作者刷题中认为有必要记录的题目

                                        前置知识回溯法经典问题之组合

                                       ♈️今日夜电波:想着你—郭顶

                                                                1:09 ━━━━━━️💟──────── 4:15
                                                                    🔄   ◀️   ⏸   ▶️    ☰ 

                                      💗关注👍点赞🙌收藏您的每一次鼓励都是对我莫大的支持😍 


目录

回溯法的理解

💮 一、子集

🌺二、子集II


回溯法的理解

 本文参考了一位大佬的题解,详细的介绍了回溯法:链接

上一篇刷题文: 回溯法经典问题之组合

        记住一句话:for循环横向遍历,递归纵向遍历,回溯不断调整结果集。 这句话将从始至终贯穿我们对于以上问题的回溯解决办法。 


💮 一、子集

题目链接:78. 子集

题目描述:

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

示例 1:

输入:nums = [1,2,3]
输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]

示例 2:

输入:nums = [0]
输出:[[],[0]]

提示:

  • 1 <= nums.length <= 10
  • -10 <= nums[i] <= 10
  • nums 中的所有元素 互不相同

本题思路:

        采用经典的“回溯三部曲”:

        1、定义两个全局变量,一个用来存放符合条件单一结果(path),一个用来存放符合条件结果的集合(result)。注意要记得用一个变量来记录遍历的位置。

        2、回溯的主体,回溯终止条件。path保存一组数据,每次遍历到叶子节点,再插入到result中,并且回溯到上一个节点。

        3、单层搜索的过程。for循环用来横向遍历,递归的过程是纵向遍历。

      特别注意: 本题虽然同之前的组合问题差不多,但是还是需要做一定的变化的,依据题意,我们都知道任何一个子集都是包涵空集的,并且子集中一个元素也算子集。

         于是根据题意写出以下题解:

class Solution {
private:
vector<int> path;
vector<vector<int>> result;void backtrack(vector<int>& nums,int index)
{result.push_back(path);   if(index==nums.size()){return;}for(int i=index;i<nums.size();i++){path.push_back(nums[i]);backtrack(nums,i+1);path.pop_back();}}
public:vector<vector<int>> subsets(vector<int>& nums) {path.clear();result.clear();sort(nums.begin(),nums.end());backtrack(nums,0);return result;}
};


🌺二、子集II

题目链接:90. 子集 II

题目描述:

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

示例 1:

输入:nums = [1,2,2]
输出:[[],[1],[1,2],[1,2,2],[2],[2,2]]

示例 2:

输入:nums = [0]
输出:[[],[0]]

提示:

  • 1 <= nums.length <= 10
  • -10 <= nums[i] <= 10

  本题思路:

        同样采用经典的“回溯三部曲”,但是由于此题中的元素是可以重复的,那这样必然会出现重复的子集,因此我们需要进行剪枝操作。此时可以参考 回溯法经典问题之组合 中最后一题。我们也建立一个used,用于标记是否使用过使用过元素。

         特别注意: 本题虽然同之前的题差不多,但是还是需要做一定的变化的。比如插入的操作。

        一图了解题解 ~(以{1,2,2}为例)

class Solution {
private:
vector<int> path;
vector<vector<int>> result;
void backtrack(vector<int>& nums,int index,vector<bool>& used)
{result.push_back(path);if(index==nums.size()){return;}for(int i=index;i<nums.size();i++){if(i>0&&nums[i-1]==nums[i]&&used[i-1]==0)continue;path.push_back(nums[i]);used[i]=1;backtrack(nums,i+1,used);used[i]=0;path.pop_back();}
}
public:vector<vector<int>> subsetsWithDup(vector<int>& nums) {path.clear();result.clear();vector<bool> used;used.resize(nums.size());sort(nums.begin(),nums.end());backtrack(nums,0,used);return result;}
};


                感谢你耐心的看到这里ღ( ´・ᴗ・` )比心,如有哪里有错误请踢一脚作者o(╥﹏╥)o!  

                                 

                                                                 给个三连再走嘛~      

http://www.yayakq.cn/news/624586/

相关文章:

  • 做网站深紫色搭配什么颜色咖啡网页设计素材
  • 机关门户网站建设要求中山网络公司网站
  • 怎么打开网站网站建设合同范本大全
  • 蚌埠做网站公司推广普通话的文章
  • 贵阳市住房和城乡建设局政务网站广元市住房和城乡建设局网站
  • 村级网站建设 不断增强物流的网站模板
  • 萧县建设局网站什么是网络营销?
  • flash网站推荐全国网站开发赛
  • 潍坊知名网站建设价格低郑州市城乡建设局和住建局官网
  • 怎样优化网站排名深圳建筑工程
  • c 可以做网站吗电子商务公司名称大全集最新
  • 中国联通网站备案系统中国建盏logo
  • 永久免费手机建站平台网站快速刷排名工具
  • c 网站开发部署聚美优品网站建设目的
  • 建设银行苏州官网招聘网站字体排版设计网站
  • 黑龙江省建设局网站首页侧边导航 wordpress
  • 一般网站建设中的推广费用网站建设zrhskj
  • 做网站需要资质开个网站需要什么
  • 济南网站制作公司哪家技术好如何制作网页广告
  • 二级网站怎样被百度收录苏州的网络企业
  • 网站建设 管理规范网站建设优化佛山
  • 鹿泉营销型网站制作价格低如何设置网站根目录
  • 房产信息平台vue seo优化
  • 广州住建厅官方网站wordpress表单的增加与查询
  • 企业网站备案网址石家庄公司建站
  • 小城镇建设网站答案上海重大新闻
  • 做年报的网站广州新闻频道
  • 石家庄建站模板源码企业网站seo优
  • 网站设计参考深圳广告设计公司深圳画册设计
  • 白云区建网站织梦做网站简单吗