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

flashfxp怎么上传对应网站空间分切机网站建设

flashfxp怎么上传对应网站空间,分切机网站建设,政务服务网站建设标准,棋牌网站搭建公司题目#xff1a;491.递增子序列、46.全排列、47.全排列 II 参考链接#xff1a;代码随想录 491.递增子序列 思路#xff1a;一开始按照基本回溯的模板来写。当路径长度大于2时加入ans#xff0c;结束条件为开始位置到达末尾。for循环部分遍历第一个加入path中的数#…题目491.递增子序列、46.全排列、47.全排列 II 参考链接代码随想录 491.递增子序列 思路一开始按照基本回溯的模板来写。当路径长度大于2时加入ans结束条件为开始位置到达末尾。for循环部分遍历第一个加入path中的数如果目前的数小于path末尾则直接考虑下一个数。写完后运行发现没有去重处理但本题的去重和上题集合2不同不能排序不是相邻也可能重复比如[4,4,5,4]会产生3个[4,4]去重方法我一开始没想到。 一开始的错误代码 class Solution { public: vectorvectorint ans;vectorint path;void backtracking(vectorint nums,int begin){//begin为开始取的位置if(path.size()2){ans.push_back(path);}if(beginnums.size()){return;}for(int ibegin;inums.size()-1;i){if(path.size()0nums[i]path.back()){//如果目前遍历的数小于path末尾则不满足递增情况直接考虑下一个数continue;}path.push_back(nums[i]);backtracking(nums,i1);path.pop_back();}}vectorvectorint findSubsequences(vectorint nums) {backtracking(nums,0);return ans;} };看了解析需要对每一层进行去重由于重复元素不相邻只能用集合来判断重复。不能再简单的用used数组了。时间复杂度O(n*2^n)。 标答 class Solution { public: vectorvectorint ans;vectorint path;void backtracking(vectorint nums,int begin){//begin为开始取的位置if(path.size()2){ans.push_back(path);}if(beginnums.size()){return;}unordered_setint set;//对本层去重for(int ibegin;inums.size()-1;i){if(path.size()0nums[i]path.back()||set.find(nums[i])!set.end()){//如果目前遍历的数小于path末尾则不满足递增情况直接考虑下一个数。或者在同一层出现重复。continue;}path.push_back(nums[i]);set.insert(nums[i]);backtracking(nums,i1);path.pop_back();//这里不需要set中移出nums[i]因为是对整层的去重}}vectorvectorint findSubsequences(vectorint nums) {backtracking(nums,0);return ans;} };注意使用set在回溯的时候不用移出元素因为是对整层去重。set也是每一层for循环之前定义一个。 看了标答发现由于题目说了数值范围[-100,100]因此可以使用数组做哈希表 class Solution { private:vectorvectorint result;vectorint path;void backtracking(vectorint nums, int startIndex) {if (path.size() 1) {result.push_back(path);}int used[201] {0}; // 这里使用数组来进行去重操作题目说数值范围[-100, 100]for (int i startIndex; i nums.size(); i) {if ((!path.empty() nums[i] path.back())|| used[nums[i] 100] 1) {continue;}used[nums[i] 100] 1; // 记录这个元素在本层用过了本层后面不能再用了path.push_back(nums[i]);backtracking(nums, i 1);path.pop_back();}} public:vectorvectorint findSubsequences(vectorint nums) {result.clear();path.clear();backtracking(nums, 0);return result;} };46.全排列 思路排列的组合的最大区别就是有顺序的考虑。比如第一个元素选的2那么后面1和3还需要考虑而组合就只需要考虑3了。所以在回溯模板的区别中首先是for循环必须每次都是从0到结束那么如何判断那些元素可以选呢我们继续采用used数组当for遍历的元素已经用过则直接continue否则加入路径。当路径长度为数组长度时将路径添加到ans。时间复杂度O(n*n!)注意这个时间复杂度就是所有排列方式的数量A(n,n)乘以生成每一个答案需要的n次push_back。 class Solution { public:vectorvectorint ans;vectorint path;void backtracking(vectorint nums,vectorint used){if(path.size()nums.size()){ans.push_back(path);return;}for(int i0;inums.size();i){//每次都要全部遍历if(used[i]1){continue;}path.push_back(nums[i]);used[i]1;backtracking(nums,used);path.pop_back();used[i]0;}}vectorvectorint permute(vectorint nums) {vectorint used(nums.size(),0);backtracking(nums,used);return ans;} };47.全排列 II 思路一开始想的就是在上题基础上加一个每层去重由于排列每次for都要遍历所有元素不是相邻情况故每层使用了一个set去重。 class Solution { public:vectorvectorint ans;vectorint path;void backtracking(vectorint nums,vectorint used){if(path.size()nums.size()){ans.push_back(path);}unordered_setint set;for(int i0;inums.size();i){//每一层去重这里不是相邻重复情况使用setif(used[i]1||set.find(nums[i])!set.end()){continue;}path.push_back(nums[i]);used[i]1;set.insert(nums[i]);backtracking(nums,used);path.pop_back();used[i]0;}}vectorvectorint permuteUnique(vectorint nums) {vectorint used(nums.size(),0);backtracking(nums,used);return ans;} };看完标答发现可以先排序然后只用一个used就可以完成所有功能。判断相邻方法和之前的组合一样。时间复杂度O(n*n!)。 class Solution { public:vectorvectorint ans;vectorint path;void backtracking(vectorint nums,vectorint used){if(path.size()nums.size()){ans.push_back(path);}for(int i0;inums.size();i){if(used[i]1||i0nums[i]nums[i-1]used[i-1]0){continue;}path.push_back(nums[i]);used[i]1;backtracking(nums,used);path.pop_back();used[i]0;}}vectorvectorint permuteUnique(vectorint nums) {sort(nums.begin(),nums.end());vectorint used(nums.size(),0);backtracking(nums,used);return ans;} };对于回溯算法的时间复杂度可以直接看这里。
http://www.zqtcl.cn/news/267323/

相关文章:

  • 网站模板用什么软件做泉州网站建设轩奇网讯
  • 网站开发必备人员网页设计图片居中代码
  • 网站列表页怎么做的百度seo优
  • 做网站销售好不好企业seo培训
  • 网站制作排版越南网站建设
  • 满城建设局网站我要买房网
  • 长沙百度提升排名南宁网站seo公司
  • 凡科网做网站怎样东莞寮步汽车城
  • 做百度网站费用多少基于html5的移动端网站开发
  • 专业做网站设计哪家好大型网站技术方案
  • 海外医疗兼职网站建设wordpress 最受欢迎主题
  • 网站改版方案案例入门级网页设计培训学员
  • 安徽优化网站运营平台
  • 小型企业网站设计教程面备案网站建设
  • 重庆业务外包网站建设办公室装修一般多少钱一个平方
  • 网站查询域名ip解析手机短视频网站的建设
  • 甘肃机械化建设工程有限公司网站微小店网站建设价格
  • 个人空间网站建设报告网络游戏交易平台
  • 深圳医疗网站建设中小企业网站功能
  • 汕头集团做网站方案建设网站要买空间吗
  • 宁波搭建网站专业展馆展厅设计公司深圳
  • 山东省建设工程电子信息网站广州开发区第一小学
  • 网站建设推广重要性河北高端网站建设
  • 网站的seo方案怎么做wordpress自动转内链
  • 番禺手机网站制作推广wordpress远程数据库
  • 企业网站seo外包 s深圳国内设计网站
  • 临海高端营销型网站建设地址免费网站alexa排名查询
  • 做企业网站的轻量级cms建设电子商务网站流程图
  • 淘宝网站设计分析国内在线免费服务器
  • wordpress网站文章加密网站建设 博采网络