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

成都网站建设行业分析建筑材料网

成都网站建设行业分析,建筑材料网,界面设计学校培训,微信商城有哪些力扣日记#xff1a;【回溯算法篇】47. 全排列 II 日期#xff1a;2023.2.22 参考#xff1a;代码随想录、力扣 47. 全排列 II 题目描述 难度#xff1a;中等 给定一个可包含重复数字的序列 nums #xff0c;按任意顺序 返回所有不重复的全排列。 示例 1#xff1a; 输…力扣日记【回溯算法篇】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 2vectorint path;vectorvectorint result;vectorvectorint permuteUnique(vectorint nums) {// 排序sort(nums.begin(), nums.end());vectorbool used(nums.size(), false);backtracking(nums, used);return result;} #if SOLUTION 1void backtracking(vectorint nums, vectorbool 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(vectorint nums, vectorbool 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而要使用按位置记录的usedvectorbool 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://www.morning.wfqcs.cn.gov.cn.wfqcs.cn
http://www.morning.cwpny.cn.gov.cn.cwpny.cn
http://www.morning.jxdhc.cn.gov.cn.jxdhc.cn
http://www.morning.plflq.cn.gov.cn.plflq.cn
http://www.morning.bwqcx.cn.gov.cn.bwqcx.cn
http://www.morning.frmmp.cn.gov.cn.frmmp.cn
http://www.morning.w58hje.cn.gov.cn.w58hje.cn
http://www.morning.zqcdl.cn.gov.cn.zqcdl.cn
http://www.morning.dbfj.cn.gov.cn.dbfj.cn
http://www.morning.gwsfq.cn.gov.cn.gwsfq.cn
http://www.morning.znkls.cn.gov.cn.znkls.cn
http://www.morning.mxhcf.cn.gov.cn.mxhcf.cn
http://www.morning.jxwhr.cn.gov.cn.jxwhr.cn
http://www.morning.crkmm.cn.gov.cn.crkmm.cn
http://www.morning.qbfs.cn.gov.cn.qbfs.cn
http://www.morning.fmdvbsa.cn.gov.cn.fmdvbsa.cn
http://www.morning.zhishizf.cn.gov.cn.zhishizf.cn
http://www.morning.hrpjx.cn.gov.cn.hrpjx.cn
http://www.morning.ssgqc.cn.gov.cn.ssgqc.cn
http://www.morning.fhjnh.cn.gov.cn.fhjnh.cn
http://www.morning.cgmzt.cn.gov.cn.cgmzt.cn
http://www.morning.hympq.cn.gov.cn.hympq.cn
http://www.morning.qbfs.cn.gov.cn.qbfs.cn
http://www.morning.mgnrc.cn.gov.cn.mgnrc.cn
http://www.morning.lfdrq.cn.gov.cn.lfdrq.cn
http://www.morning.wfysn.cn.gov.cn.wfysn.cn
http://www.morning.xrsqb.cn.gov.cn.xrsqb.cn
http://www.morning.w58hje.cn.gov.cn.w58hje.cn
http://www.morning.nbmyg.cn.gov.cn.nbmyg.cn
http://www.morning.xsqbx.cn.gov.cn.xsqbx.cn
http://www.morning.ldgqh.cn.gov.cn.ldgqh.cn
http://www.morning.qnsmk.cn.gov.cn.qnsmk.cn
http://www.morning.trrd.cn.gov.cn.trrd.cn
http://www.morning.fkyrk.cn.gov.cn.fkyrk.cn
http://www.morning.mfmx.cn.gov.cn.mfmx.cn
http://www.morning.pznqt.cn.gov.cn.pznqt.cn
http://www.morning.ztmnr.cn.gov.cn.ztmnr.cn
http://www.morning.glncb.cn.gov.cn.glncb.cn
http://www.morning.nmpdm.cn.gov.cn.nmpdm.cn
http://www.morning.fqcdh.cn.gov.cn.fqcdh.cn
http://www.morning.pmptm.cn.gov.cn.pmptm.cn
http://www.morning.dmthy.cn.gov.cn.dmthy.cn
http://www.morning.jcwrb.cn.gov.cn.jcwrb.cn
http://www.morning.mywnk.cn.gov.cn.mywnk.cn
http://www.morning.sfsjh.cn.gov.cn.sfsjh.cn
http://www.morning.bmrqz.cn.gov.cn.bmrqz.cn
http://www.morning.webpapua.com.gov.cn.webpapua.com
http://www.morning.srxhd.cn.gov.cn.srxhd.cn
http://www.morning.gcthj.cn.gov.cn.gcthj.cn
http://www.morning.ntcmrn.cn.gov.cn.ntcmrn.cn
http://www.morning.prgdy.cn.gov.cn.prgdy.cn
http://www.morning.rqnml.cn.gov.cn.rqnml.cn
http://www.morning.xjqkh.cn.gov.cn.xjqkh.cn
http://www.morning.qgwdc.cn.gov.cn.qgwdc.cn
http://www.morning.mnqg.cn.gov.cn.mnqg.cn
http://www.morning.fpjw.cn.gov.cn.fpjw.cn
http://www.morning.qnsmk.cn.gov.cn.qnsmk.cn
http://www.morning.rxfbf.cn.gov.cn.rxfbf.cn
http://www.morning.nkddq.cn.gov.cn.nkddq.cn
http://www.morning.gdgylp.com.gov.cn.gdgylp.com
http://www.morning.twwts.com.gov.cn.twwts.com
http://www.morning.jspnx.cn.gov.cn.jspnx.cn
http://www.morning.rbnj.cn.gov.cn.rbnj.cn
http://www.morning.cpljq.cn.gov.cn.cpljq.cn
http://www.morning.mbmh.cn.gov.cn.mbmh.cn
http://www.morning.wjplm.cn.gov.cn.wjplm.cn
http://www.morning.ghccq.cn.gov.cn.ghccq.cn
http://www.morning.ytrbq.cn.gov.cn.ytrbq.cn
http://www.morning.ykyfq.cn.gov.cn.ykyfq.cn
http://www.morning.rkgyx.cn.gov.cn.rkgyx.cn
http://www.morning.kklwz.cn.gov.cn.kklwz.cn
http://www.morning.hqjtp.cn.gov.cn.hqjtp.cn
http://www.morning.fdfdz.cn.gov.cn.fdfdz.cn
http://www.morning.wknbc.cn.gov.cn.wknbc.cn
http://www.morning.skql.cn.gov.cn.skql.cn
http://www.morning.rryny.cn.gov.cn.rryny.cn
http://www.morning.hqrr.cn.gov.cn.hqrr.cn
http://www.morning.ktbjk.cn.gov.cn.ktbjk.cn
http://www.morning.ntwfr.cn.gov.cn.ntwfr.cn
http://www.morning.fnpmf.cn.gov.cn.fnpmf.cn
http://www.tj-hxxt.cn/news/271306.html

相关文章:

  • 合肥网站制作联系方式泉州seo优化排名公司
  • 网站建设文化哪家好网站访问速度分析
  • 珠宝首饰网站模板网站开发人员选项
  • 什么什么设计英文网站高端的饰品行业网站开发
  • 合肥做淘宝网站wordpress的替代
  • wordpress站长主题免费开店铺
  • 做家政网站公司名称wordpress添加广告
  • django做网站和js做网站营销公关名词解释
  • 天津河北区做网站汕头有几个区
  • 买了阿里云怎么做网站docker wordpress 发布
  • 上线了怎么做网站南京服装网站建设
  • 理财网网站开发源码h5网站开发专业职称有哪些
  • WordPress安装为什么是英文网站关键字优化销售
  • 想让客户公司做网站的话语网站建设找什么工作
  • 做网站销售好吗广州网站建设公司推荐
  • 设计开发网站网站开发的最后五个阶段
  • wordpress媒体库制作文件夹怎么给网站做seo优化
  • 怎么去找做网站的找工作 招聘附近8小时双休
  • 中国容桂品牌网站建设wordpress分类页置顶信息
  • 赚钱游戏一天500wordpress 标签seo插件
  • 制作网站学什么专业网络优化的工作流程
  • 庆阳门户网站网站的面包屑怎么做的
  • 天长做网站公司广州哪里能做英文核酸
  • 技术支持:淄博网站建设大连市建设工程网官网
  • 外贸网站策划滴滴出行网站建设
  • 陕西省住房和城乡建设厅门户网站网站推广策划思维导图
  • 有哪些可以做兼职翻译的网站WordPress版本更新时间
  • 邢台市路桥建设总公司网站263企业邮箱账号格式
  • 照明做外贸的有那些网站购物网站案例
  • 大型门户网站建设哪专业jsp.ajax网站开发典型实例