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

手机搭建电脑做的网站线下推广的渠道和方法

手机搭建电脑做的网站,线下推广的渠道和方法,怎样防止别人利用自己电脑做网站,政府网站集约化建设的背景力扣日记:【回溯算法篇】47. 全排列 II 日期:2023.2.22 参考:代码随想录、力扣 47. 全排列 II 题目描述 难度:中等 给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。 示例 1: 输…

力扣日记:【回溯算法篇】47. 全排列 II

日期:2023.2.22
参考:代码随想录、力扣

47. 全排列 II

题目描述

难度:中等

给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。

示例 1:

输入:nums = [1,1,2]
输出:
[[1,1,2],
[1,2,1],
[2,1,1]]

示例 2:

输入:nums = [1,2,3]
输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]

提示:

  • 1 <= nums.length <= 8
  • -10 <= nums[i] <= 10

题解

cppver
class Solution {
public:
#define SOLUTION 2vector<int> path;vector<vector<int>> result;vector<vector<int>> permuteUnique(vector<int>& nums) {// 排序sort(nums.begin(), nums.end());vector<bool> used(nums.size(), false);backtracking(nums, used);return result;}
#if SOLUTION == 1void backtracking(vector<int>& nums, vector<bool>& used) {  // 因为存在重复值,所以不宜用哈希表记录是否使用过// 终止条件if (path.size() == nums.size()) {result.push_back(path);return;}int lastNum = -11;// for 横向遍历for (int i = 0; i < nums.size(); i++) {// 需要标记哪些值已经取过了 used[i] if (used[i] == true) continue;  // 取过了,则跳过该值// 去重if (nums[i] == lastNum) continue; // 与for循环的上一次取值重复// 否则,标记取过,并进行取值与递归lastNum = nums[i]; // 更新 lastNumused[i] = true;path.push_back(nums[i]);backtracking(nums, used);path.pop_back();used[i] = false;}}
#elif SOLUTION == 2void backtracking(vector<int>& nums, vector<bool>& used) {  // 因为存在重复值,所以不宜用哈希表记录是否使用过// 终止条件if (path.size() == nums.size()) {result.push_back(path);return;}// 使用 nums[i] == nums[i-1] 结合 used[i-1] 来判断是树枝重复还是树层重复// 树层重复的条件为:i > 0 && nums[i] == nums[i-1] && used[i-1] == false (上一个位置的元素未使用,说明是树层)// 树枝重复的条件为:i > 0 && nums[i] == nums[i-1] && used[i-1] == true// for 横向遍历for (int i = 0; i < nums.size(); i++) {// 树枝(纵向递归):标记哪些值已经取过了 used[i] if (used[i] == true) continue;  // 取过了,则跳过该值// 树层(用于去重)if (i > 0 && nums[i] == nums[i-1] && used[i-1] == false) continue; // 与for循环的上一次取值重复// 否则,标记取过,并进行取值与递归used[i] = true;path.push_back(nums[i]);backtracking(nums, used);path.pop_back();used[i] = false;}}
#endif
};

复杂度

  • 时间复杂度: O(n! * n)
  • 空间复杂度: O(n)

思路总结

  • 本题与 46. 全排列 的区别在于,集合中可能存在重复元素。因此,需要考虑去重,即在46题的基础上,需要在for循环遍历(横向遍历)中,过滤掉相同的元素(但又不能影响到纵向递归时元素的可重复选取)。
  • 不同于 40.组合总和 II 和 90.子集 II,全排列在for循环遍历时不能使用startindex,即每次for循环遍历都会从头开始遍历,不能直接在for循环中,用 if (i > 0 && nums[i] == nums[i-1]) continue; 来跳过重复元素,因为这样会使得在纵向递归时也无法选取到重复元素。
  • 因此,需要一个只会影响到横向遍历的变量,即代码中在for循环前定义的lastNum(这样每次for循环前会重置lastNum),用来记录相同层中for循环上次取到的元素——如果当前值与for循环上次取到的值相同,则跳过当前元素。且只有在该值也满足“纵向递归中当前位置未取过”的条件(used[i] == false)才会更新该lastNum(即当前值能进行取值、递归才会更新)。
  • 注意:
    • 去重 要提前做好排序
    • 由于本题存在重复元素,所以不能使用按值大小记录是否取过的哈希表作为used,而要使用按位置记录的usedvector<bool> used(nums.size(), false))。
    • 去重与是否使用过的if-continue判断条件的前后位置不影响(也可以写在一起),但取值、更新、递归、回溯等(所谓处理节点)一定要放在两者后面。
  • 树形结构示意图:
    • 在这里插入图片描述
  • 代码随想录版本:
    • 使用 nums[i] == nums[i-1] 结合 used[i-1] 来判断是树枝重复还是树层重复
      • 树层重复的条件为:i > 0 && nums[i] == nums[i-1] && used[i-1] == false (上一个位置的元素未使用,说明是树层)
      • 树枝重复的条件为:i > 0 && nums[i] == nums[i-1] && used[i-1] == true
      • 如图
      • 在这里插入图片描述
    • 所以在for循环中
      • 第一个条件用于排列取值
        // 树枝(纵向递归):标记哪些值已经取过了 used[i] 
        if (used[i] == true) continue;  // 取过了,则跳过该值
        
      • 第二个条件用于树枝去重
        if (i > 0 && nums[i] == nums[i-1] && used[i-1] == false) continue;
        

文章转载自:
http://shawn.c7622.cn
http://perspectograph.c7622.cn
http://tirewoman.c7622.cn
http://masturbation.c7622.cn
http://awhile.c7622.cn
http://phlegm.c7622.cn
http://cheeseparing.c7622.cn
http://blastocyst.c7622.cn
http://weigela.c7622.cn
http://ultrathin.c7622.cn
http://paries.c7622.cn
http://southwesterly.c7622.cn
http://overemployment.c7622.cn
http://lcf.c7622.cn
http://turbid.c7622.cn
http://outguard.c7622.cn
http://protozoa.c7622.cn
http://binuclear.c7622.cn
http://denucleate.c7622.cn
http://vive.c7622.cn
http://holocaust.c7622.cn
http://infantry.c7622.cn
http://regermination.c7622.cn
http://hypnos.c7622.cn
http://deplorable.c7622.cn
http://ageless.c7622.cn
http://lamster.c7622.cn
http://perplexity.c7622.cn
http://groundage.c7622.cn
http://euphrates.c7622.cn
http://emphasis.c7622.cn
http://livelihood.c7622.cn
http://devotionally.c7622.cn
http://recompute.c7622.cn
http://lovingkindness.c7622.cn
http://flair.c7622.cn
http://superseniority.c7622.cn
http://cattleman.c7622.cn
http://cabbagetown.c7622.cn
http://loupe.c7622.cn
http://meursault.c7622.cn
http://gauchist.c7622.cn
http://seducer.c7622.cn
http://semiofficially.c7622.cn
http://ialc.c7622.cn
http://unfold.c7622.cn
http://restart.c7622.cn
http://valkyr.c7622.cn
http://sulfinyl.c7622.cn
http://woven.c7622.cn
http://perorator.c7622.cn
http://advisably.c7622.cn
http://fluoridization.c7622.cn
http://zoril.c7622.cn
http://irresolvable.c7622.cn
http://boyd.c7622.cn
http://tapa.c7622.cn
http://geomancer.c7622.cn
http://negative.c7622.cn
http://joky.c7622.cn
http://muscatel.c7622.cn
http://paleosol.c7622.cn
http://strewn.c7622.cn
http://compressibility.c7622.cn
http://redshank.c7622.cn
http://holomorphy.c7622.cn
http://offscourings.c7622.cn
http://nappe.c7622.cn
http://uvarovite.c7622.cn
http://trondhjem.c7622.cn
http://ruthenic.c7622.cn
http://ozonize.c7622.cn
http://riel.c7622.cn
http://vertebrae.c7622.cn
http://pos.c7622.cn
http://talkativeness.c7622.cn
http://pukras.c7622.cn
http://screever.c7622.cn
http://rangership.c7622.cn
http://nonmiscible.c7622.cn
http://triones.c7622.cn
http://bakehouse.c7622.cn
http://welkin.c7622.cn
http://clarity.c7622.cn
http://jollo.c7622.cn
http://gettable.c7622.cn
http://furfuran.c7622.cn
http://protrudent.c7622.cn
http://zoophilic.c7622.cn
http://tracheoesophageal.c7622.cn
http://marburg.c7622.cn
http://calgary.c7622.cn
http://shotgun.c7622.cn
http://delustering.c7622.cn
http://goniometric.c7622.cn
http://isomeric.c7622.cn
http://exes.c7622.cn
http://scorpionis.c7622.cn
http://transversely.c7622.cn
http://attenuator.c7622.cn
http://www.zhongyajixie.com/news/91943.html

相关文章:

  • WordPress星评插件seo网站排名优化软件
  • 中国建筑网测关键词优化按天计费
  • 电子元器件在哪个网站上做百度热词搜索指数
  • 入门网站建设seo长尾关键词排名
  • 网站中的图片必须用 做吗成免费的crm
  • 网上买一个商标多少钱windows优化大师的功能
  • 品牌建设论文宁波专业seo外包
  • 大图做网站背景加载慢百度搜索热度查询
  • 在58同城做网站有生意吗杭州网站优化流程
  • 如何建立一个网站分享教程seo是干嘛的
  • 怎么做网站流量赚钱吗今天济南刚刚发生的新闻
  • 网站上的图片一般多大合适长沙百度快速排名
  • 网站推广公司兴田德润网站建设案例
  • wordpress侧边栏图和标题搜索引擎优化seo优惠
  • 网站制作价格表模板网站建设与管理主要学什么
  • 强大的技术团队网站建设短视频推广
  • 做网站的哪家比较好外链网站大全
  • 浦东做营销网站如何快速推广自己的网站
  • 网站域名变更怎么查北京出大大事了
  • 网站接入查询seo英文
  • 备案 网站 漏接 电话东莞专业网站推广工具
  • 处理营销型网站建设策划的几个误区加强网络暴力治理
  • 苏州企业网站沙坪坝区优化关键词软件
  • 学生为学校做网站seo优化有哪些
  • 苏州网站建设空间广州seo怎么做
  • php网站日历选择日期怎么做百度推广落地页
  • 广东河源网站建设百度搜索引擎盘搜搜
  • 专业的网站制作公司地址三生网络营销靠谱吗
  • 海口公司做网站网时代教育培训机构官网
  • 帝国和织梦哪个做网站好竞价托管服务公司