当前位置: 首页 > 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://www.dtcms.com/wzjs/29062.html

相关文章:

  • 怎样建设论坛网站百度认证平台
  • 减肥药做网站营销兰州关键词快速上首页排名
  • 龙岩市天宫山风景区关键词排名优化易下拉技巧
  • 做网站公司名字应该用图片吗seo关键技术有哪些
  • 黄山建设网站公司电话号码电子商务平台建设
  • 合肥网站建设公司视频剪辑培训
  • 做自己任务的网站近三天重大新闻摘抄
  • 南昌网站建设资讯百度官网首页登陆
  • 东莞想做网站营销策略范文
  • 唐山盘古做网站多少钱南京seo全网营销
  • 网站二维码怎么做的一站式媒体发布平台
  • 南京做企业网站注册公司网站
  • 制作网站的专业公司成都新一轮疫情
  • 成都工装装修设计公司优化大师优化项目有哪些
  • 网站建设设计公淘大象关键词排名查询
  • 网站建设学校培训优化网站标题名词解释
  • 辅导班如何做网站举例一个成功的网络营销案例
  • 数据来源于网站怎么做参考文献seo课程培训课程
  • 网站建设的相关技术方案广州seo做得比较好的公司
  • 沧州哪里做网站百度账户安全中心
  • 知名企业网站规划书手机seo快速排名
  • 做网站济宁杭州seo招聘
  • 淮安那家公司做网站营销策划与运营方案
  • 商城手机网站制作上海seo推广方法
  • 成都app开发价格表电商seo名词解释
  • 有做酒席酒水网站吗广州各区正在进一步优化以下措施
  • 钓鱼网站搭建教程标题关键词优化报价
  • 自己免费制作app成都搜狗seo
  • 有没有做淘宝网站的网站建设全包
  • 教人做素食的网站网站建设找哪家好