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

电子商城网站模板关于网站可信备案

电子商城网站模板,关于网站可信备案,商城网站开发方案,查询网站建设时间491.非减子序列 题目链接. - 力扣(LeetCode) 这里和子集问题||很像,但是这里要的是非递减的子序列,要按照给的数组的顺序来进行排序,就是如果我给定的数组是[4,4,3,2,1],如果用子集||的做法先进行排序得到…

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:
vector<int>path;
vector<vector<int>> result;
void backtracing (vector<int>& nums,int startindex){if(path.size()>1){result.push_back(path);//子集在2到2以上再进行收集}unordered_set<int> used;//每一层都会重置usedfor(int i=startindex;i<nums.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,i+1);path.pop_back();}
}vector<vector<int>> findSubsequences(vector<int>& nums) {backtracing (nums,0);return result;}
};

46.全排列

题目链接https://leetcode.cn/problems/permutations

要求是同一个数不能重复选取嘛,所以要用到used数组

这个是排列问题,需要返回和传进来数组大小相等的全排列数组,所以排列问题就不用设置startindex了,因为不用对前面的数进行去重,但是要设置一个used数组,不能重复选择同一个元素。

class Solution {//正确代码
public:
vector<int>path;
vector<vector<int>>result;void backtracking(vector<int>& nums,vector<bool>used){if(path.size()==nums.size()){result.push_back(path);return;}for(int i=0;i<nums.size();i++){if(used[i]==true){//用过的数就跳过continue;}path.push_back(nums[i]);used[i]=true;backtracking(nums,used);path.pop_back();used[i]=false;}}vector<vector<int>> permute(vector<int>& nums) {vector<bool>used(nums.size(),false);backtracking(nums,used);return result;}
};

 注意这里只能是递归到used数组为true的时候continue进行下一次选取,如果像我一样直接对used等于0来进行判断的话,那它等于1的时候就不会有限制,就会一直进行递归进行循环,直到栈空(离大谱..)

for(int i=0;i<nums.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:vector<int> path;vector<vector<int>> result;void backtracking(vector<int>& nums, vector<bool> 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();}}vector<vector<int>> permuteUnique(vector<int>& nums) {vector<bool> used(nums.size(), false);sort(nums.begin(), nums.end());//把nums排序used数组好进行比较进行树层去重backtracking(nums, used);return result;}
};

 

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

相关文章:

  • 网站中竖导航栏怎么做ceo是什么职位的简称
  • 如何把一个静态网站如何介绍设计的网站模板下载地址
  • app网站开发住房公积金济南做网站的好公司
  • 江苏专业网站推广公司哪家好公共服务平台网站建设方案
  • 做网站要用到的技术贵州省建设监理协会网站
  • 公司网站自己可以学习优化吗福清建设局网站简介
  • 西安百度网站建设行距网站
  • 电商网站建设服务平台做网站设计素材
  • 简搜网站提交网站备案需要具备什么
  • 贵阳网站建设q479185700惠如何用手机做网页
  • 制作一个网站数据库怎么做网页设计与制作题库及答案
  • 百度云服务器做网站稳定吗wordpress留言板comments.php添加自定义字段
  • 2018做网站公司个人怎么做网络推广
  • 自适应网站怎样做移动适配松江九亭网站建设
  • 自治区住房和城乡建设部网站公司做网站的费用属于什么费用
  • 网站推广的基本方法是wordpress主机教程
  • 高校网站群管理系统彩票网站有人做吗
  • 东莞企业网站模板建站交互设计师
  • 体育局网站建设怎么自己做一个网站
  • 网站定制公司哪家好wordpress 站外 链接
  • 专业网站改版给别人网站做跳转
  • 深圳网站的建设网站做国际化
  • 滨州北京网站建设价格设计一个简单的物联网系统
  • 三门峡做网站优化什么是电子商务?
  • 兰州新区规划建设管理局网站珠海市规划建设局网站
  • 重庆设计集团有限公司信息流广告优化师
  • 酒店网站建设研究领取免费空间
  • 网站建设建设公司资质要求国外网站app
  • 德州网站制作哪家好中国建设银行官网站e路护航下载
  • 网站建设规范方案域名是企业的网上商标