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

建德网站建筑装饰装修工程公司

建德网站,建筑装饰装修工程公司,网页制作公司列举自己的优势,张槎建网站公司491.非减子序列 题目链接. - 力扣#xff08;LeetCode#xff09; 这里和子集问题||很像#xff0c;但是这里要的是非递减的子序列#xff0c;要按照给的数组的顺序来进行排序#xff0c;就是如果我给定的数组是[4,4,3,2,1]#xff0c;如果用子集||的做法先进行排序得到…491.非减子序列 题目链接. - 力扣LeetCode 这里和子集问题||很像但是这里要的是非递减的子序列要按照给的数组的顺序来进行排序就是如果我给定的数组是[4,4,3,2,1]如果用子集||的做法先进行排序得到[1,2,3,4,4]那我就会收集得到[1,2][2,3][3,4][4,4]等等子集但是这道题的话我得到的集合只有[4,4]就是这里我只从我给的数组里进行排序给非递减的子集。 去结点操作 一、进行树层去重 但是用之前的方法排序后看used数组里面我两个元素到底用没用已经不可行了所以这里加了一个set数组来进行去重只要我没有和之前相同的元素那就继续取 这里不用回溯掉used  我觉得是之前回溯是因used定义是在主函数里面你不手动回溯那个值不会主动变为0而这里直接定义函数里在每一层循环外面我一进去递归就重开了一个set数组天然的就不用进行回溯了 二、去掉递减的结点 去结点的时候我们把我们遍历到的节点和收集到的结点进行比较如果这个节点比我们收集到的结点小了那么我们硬塞进去就不是递增序列了所以直接continue进行收集下一个结点。 class Solution { public: vectorintpath; vectorvectorint result; void backtracing (vectorint nums,int startindex){if(path.size()1){result.push_back(path);//子集在2到2以上再进行收集}unordered_setint used;//每一层都会重置usedfor(int istartindex;inums.size();i){if(!path.empty()nums[i]path.back()||used.find(nums[i])!used.end()){continue;//去掉要进行递减的结点和树层去重}path.push_back(nums[i]);used.insert(nums[i]);//把nums[i]的值放used里面好进行判断到底用没用过backtracing (nums,i1);path.pop_back();} }vectorvectorint findSubsequences(vectorint nums) {backtracing (nums,0);return result;} }; 46.全排列 题目链接https://leetcode.cn/problems/permutations 要求是同一个数不能重复选取嘛所以要用到used数组 这个是排列问题需要返回和传进来数组大小相等的全排列数组所以排列问题就不用设置startindex了因为不用对前面的数进行去重但是要设置一个used数组不能重复选择同一个元素。 class Solution {//正确代码 public: vectorintpath; vectorvectorintresult;void backtracking(vectorint nums,vectorboolused){if(path.size()nums.size()){result.push_back(path);return;}for(int i0;inums.size();i){if(used[i]true){//用过的数就跳过continue;}path.push_back(nums[i]);used[i]true;backtracking(nums,used);path.pop_back();used[i]false;}}vectorvectorint permute(vectorint nums) {vectorboolused(nums.size(),false);backtracking(nums,used);return result;} }; 注意这里只能是递归到used数组为true的时候continue进行下一次选取如果像我一样直接对used等于0来进行判断的话那它等于1的时候就不会有限制就会一直进行递归进行循环直到栈空离大谱.. for(int i0;inums.size();i){//错误代码if(used[i]false){path.push_back(nums[i]);used[i]true;}backtracking(nums,used);path.pop_back();used[i]false;} 47.全排列|| 题目链接https://leetcode.cn/problems/permutations-ii 这道题和46.全排列不太一样的就是这里给的nums数组有重复值比如nums给[1,1,2]那么如果我按没有重复数的做法来做的话就会有两个[1,1,2]那这里就是不允许的所以我们要在上一道题的基础上多进行一次去重就是像组合问题一样进行树层去重同一树层上的数continue不再选取。 class Solution { public:vectorint path;vectorvectorint result;void backtracking(vectorint nums, vectorbool used) {if (nums.size() path.size()) {result.push_back(path);//到了nums大小就收集到result然后返回return;}for (int i 0; i nums.size(); i) {if (i 0 nums[i] nums[i - 1] used[i - 1] false)continue;//树层去重if (used[i] true)//选过的不再重复选continue;path.push_back(nums[i]);used[i] true;backtracking(nums, used);used[i] false;path.pop_back();}}vectorvectorint permuteUnique(vectorint nums) {vectorbool used(nums.size(), false);sort(nums.begin(), nums.end());//把nums排序used数组好进行比较进行树层去重backtracking(nums, used);return result;} };
http://www.dnsts.com.cn/news/47397.html

相关文章:

  • 办公室装修设计简约优化seo方案
  • c 微信网站开发中国舆情网
  • 网站建设反馈书模板海宁网站设计
  • 协助别人做网站犯法么126企业邮箱注册申请
  • 亚马逊做qa的网站现在用什么工具做网站好
  • 如何建网站费用多少wordpress智能
  • 青岛网站制作用html制作的旅游网页
  • 中国建设银行北京分行官网站做网站买主机还是服务器
  • 双语网站后台怎么做长春专业做网站的公司
  • 用div做网站中间部分济南中企动力怎么样
  • 山东网站优化公司代做毕业设计找哪个网站好
  • 网站建设企业排名卫生计生加强门户网站建设
  • 网站的建设流程是什么计算机二级网页设计考什么
  • 公司做网站要多少钱徐州网站客户
  • 网站查询域名ip解析开发网站设计公司
  • 网站升级维护中 模板公司想建个网站
  • 湛江做网站制作网站建设的基础常识
  • 网站制作费用是多少自助建站好吗
  • 如何用手机网站做淘宝客火车头 wordpress4.9
  • 东莞手机网站建设怎么用手机创建网站
  • 网站建设公司华网天下买送活动网站首页确认书
  • 广州专业建网站公司网站分类表
  • flash 网站 源码成都住建局官网住建智慧建管
  • 网站优化排名易下拉稳定域名代备案
  • 杭州建设企业网站个人做地方民生网站
  • 南宁网站推广大全网站响应式设计
  • 关于asp.net的网站模板漳州网站开发找出博大科技
  • 网页设计导航赣榆网站建设xxiaoseo
  • 盗版网站怎么做的网站大图怎么优化
  • txt网站推荐做暧网站