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

苏州网站开发公司济南兴田德润地址网站查询工具

苏州网站开发公司济南兴田德润地址,网站查询工具,黑龙江省建设集团网站,制作网站必做步骤目录 一、题目描述 方法一、直接回溯哈希表 方法二、二进制枚举数组哈希 方法三、递归枚举 一、题目描述 491. Non-decreasing Subsequences 方法一、直接回溯哈希表 class Solution {vector<vector<int>> res;vector<int> aseq; public:vector<vec…

目录

一、题目描述

方法一、直接回溯+哈希表

方法二、二进制枚举+数组哈希

方法三、递归枚举


一、题目描述

491. Non-decreasing Subsequences

方法一、直接回溯+哈希表

class Solution {vector<vector<int>> res;vector<int> aseq;
public:vector<vector<int>> findSubsequences(vector<int>& nums) {backtracking(nums,0);return res;}void backtracking(vector<int>& nums,int start){if(aseq.size()>=2){res.push_back(aseq);}unordered_set<int> used_set;for(int i = start;i < nums.size();i++){if(aseq.size()>0 && aseq.back() >nums[i])continue;if(used_set.contains(nums[i]))continue;used_set.insert(nums[i]);aseq.push_back(nums[i]);backtracking(nums,i+1);aseq.pop_back();}}
};

由于题目保证-100<=nums[i]<=100,去重的哈希表也可以用数组来实现。

class Solution {vector<vector<int>> res;vector<int> aseq;
public:vector<vector<int>> findSubsequences(vector<int>& nums) {backtracking(nums,0);return res;}void backtracking(vector<int>& nums,int start){if(aseq.size()>=2){res.push_back(aseq);}vector<bool> used_set(201,false);for(int i = start;i < nums.size();i++){if(aseq.size()>0 && aseq.back() >nums[i])continue;if(used_set[nums[i]+100])continue;used_set[nums[i]+100] = true;aseq.push_back(nums[i]);backtracking(nums,i+1);aseq.pop_back();}}
};

方法二、二进制枚举+数组哈希

class Solution {
public:vector<vector<int>> findSubsequences(vector<int>& nums) {vector<vector<int>> res;vector<int> aseq;int n = nums.size();int m = 1<<n;unordered_set<int> seq_set;for(int mask = 0;mask < m;mask++){aseq.clear();for(int i = 0;i < n;i++){if(mask & (1<<i)){if(aseq.size() >0 && aseq.back() >nums[i])continue;aseq.push_back(nums[i]);}}if(aseq.size()<2)continue;int seq_id = hash_func(aseq);if(seq_set.contains(seq_id))continue;seq_set.insert(seq_id);res.push_back(aseq);}return res;}int hash_func(vector<int> &seq){int mod = int(1e9)+7;int base = 263;int n = seq.size();int res = 0;for(int i = 0;i <n;i++){res = 1LL*res*base%mod + (seq[i]+101);res %=mod;}return res;}
};

方法三、递归枚举

class Solution {vector<vector<int>> res;vector<int> aseq;unordered_set<int> seq_set;
public:vector<vector<int>> findSubsequences(vector<int>& nums) {dfs(nums,0,INT_MIN);return res;}void dfs(vector<int>& nums,int index,int last){if(index == nums.size()){if(aseq.size() >= 2){res.push_back(aseq);}return;}if(nums[index] >= last){aseq.push_back(nums[index]);dfs(nums,index+1,nums[index]);aseq.pop_back();}if(nums[index]!=last){dfs(nums,index+1,last);}}
};

如果难以理解上面去重的逻辑,也可以用数组哈希在收集结果的时候去重

class Solution {vector<vector<int>> res;vector<int> aseq;unordered_set<int> seq_set;
public:vector<vector<int>> findSubsequences(vector<int>& nums) {dfs(nums,0,INT_MIN);return res;}void dfs(vector<int>& nums,int index,int last){if(index == nums.size()){if(aseq.size() >= 2){int seq_id = hash_func(aseq);if(!seq_set.contains(seq_id)){seq_set.insert(seq_id);res.push_back(aseq);}}return;}if(nums[index] >= last){//保证结果序列是非递减的aseq.push_back(nums[index]);dfs(nums,index+1,nums[index]);aseq.pop_back();}// if(nums[index]!=last){dfs(nums,index+1,last);// }}int hash_func(vector<int> &seq){int mod = int(1e9)+7;int base = 263;int n = seq.size();int res = 0;for(int i = 0;i <n;i++){res = 1LL*res*base%mod + (seq[i]+101);res %=mod;}return res;}
};

文章转载自:

http://oGEzKYVw.kdjtt.cn
http://tRffzcJE.kdjtt.cn
http://kdExVOsj.kdjtt.cn
http://tzYZtieM.kdjtt.cn
http://wOzXAIue.kdjtt.cn
http://ApPN69GC.kdjtt.cn
http://xl0JY4dk.kdjtt.cn
http://T11jGfAw.kdjtt.cn
http://lPeRqhcG.kdjtt.cn
http://ibCn9uVS.kdjtt.cn
http://5JMlqCsv.kdjtt.cn
http://lmjzVVr0.kdjtt.cn
http://VbG8GjFg.kdjtt.cn
http://YL92vdVk.kdjtt.cn
http://IfF60ptC.kdjtt.cn
http://RBOU1tG2.kdjtt.cn
http://BsH2y8wt.kdjtt.cn
http://1sMU05qY.kdjtt.cn
http://3eCXVkKT.kdjtt.cn
http://Ci3IYzwG.kdjtt.cn
http://vZy1NGoR.kdjtt.cn
http://rBRkEDgE.kdjtt.cn
http://4XI9knl5.kdjtt.cn
http://se3FLAZr.kdjtt.cn
http://qTbon9YD.kdjtt.cn
http://2G4mpGk3.kdjtt.cn
http://clzZ9Yms.kdjtt.cn
http://Z2ZoHiSj.kdjtt.cn
http://LxA1K5Sd.kdjtt.cn
http://LPbl4fv3.kdjtt.cn
http://www.dtcms.com/wzjs/766318.html

相关文章:

  • 英文网站制作++官网个人做网站给手机发短信
  • wordpress网站突然打不开上海网站快速排名提升
  • 东莞建设网站的位置邯郸网站建设产品介绍
  • 正规的锦州网站建设网站建设的预算
  • 建设网站 xp甘肃省建设厅官方网站质监局
  • 北京专业建网站的公司谁知道苏州溪城水处理网站谁做的
  • 济南网站推广效果盐山网站开发
  • 小米路由2 做网站免费友情链接网
  • 爱情动做网站推荐织梦做的网站用什么数据库
  • 做营销网站建设价格网站的月度流量统计报告怎么做
  • 做国际网站怎么做国外搜索引擎
  • 做网站有啥软件在线视频下载网站如何做
  • 西安企业门户网站建设怎么制作游戏修改器
  • 青海建设局网站大兴58网站起名网站制作
  • 湖北建站哪个网站可以学做包子
  • 选择一个域名进行网站建设网络整合营销的含义
  • 零基础学做衣服的网站咨询公司简介
  • app推荐网站做网站不备案
  • 奉化网站建设网站点击推广
  • 潍坊品牌网站建设公司建协网官方网站
  • 做衬衫的网站怎么把平台推广出去
  • 新开网站做内贸业务员好做杭州建设工程信用平台
  • 男女做那个那个的视频网站创建公众号的步骤
  • 网站制作公司在哪里找国外营销型网站设计
  • aspcms网站栏目调用公司做网站多少钱
  • 养殖网站模版中时讯通信建设有限公司网站
  • 网站建设合同是否属于技术服务合同wap和网页的区别
  • 网站建设观点一卡2卡三卡4卡入口天堂
  • 有凡客模版怎么建设网站视频号下载软件免费
  • 免费微网站与公众号平台对接汽车网站和移动端建设方案