首页 > 编程语言 >代码随想录算法训练营第二十四天| 491.递增子序列 46.全排列 47.全排列 II

代码随想录算法训练营第二十四天| 491.递增子序列 46.全排列 47.全排列 II

时间:2023-07-05 10:35:46浏览次数:58  
标签:排列 nums 46 随想录 back vector result path size

 491.递增子序列 

此题的难点:

1,前提需要保留原有顺序

2,保证递增

3,保证去重

注意:

去重一定要有set的同时保证有顺序

代码:

 1 void findSubsequences_trackBack(vector<int>& nums, int startIndex, vector<int>& path, vector<vector<int>>& result)
 2 {
 3     if (path.size() >= 2 )
 4     {
 5         result.push_back(path);
 6     }
 7 
 8     unordered_set<int> selected;
 9     for (int i = startIndex; i < nums.size(); i++)
10     {
11         if (selected.find(nums[i]) != selected.end() || (path.size() > 0 && nums[i] < path.back()))
12         {
13             continue;
14         }
15         selected.insert(nums[i]);
16         path.push_back(nums[i]);
17         findSubsequences_trackBack(nums, i + 1, path, result);
18         path.pop_back();
19     }
20 
21 }
22 vector<vector<int>> findSubsequences(vector<int>& nums) {
23     vector<vector<int>> result;
24     if (nums.size() == 0) return result;
25 
26     vector<int>path;
27     findSubsequences_trackBack(nums, 0, path, result);
28     return result;
29 }

 

标签:排列,nums,46,随想录,back,vector,result,path,size
From: https://www.cnblogs.com/smartisn/p/17527836.html

相关文章

  • 数字全排列
     题解: 一条路走到头,然后再回头vis数组来标记已走过的点,a数组来存数字1#include<bits/stdc++.h>2usingnamespacestd;3intn;4boolvis[20];5inta[20];67voiddfs(intx)8{9if(x>n)10{11for(inti=1;i<......
  • pytest + yaml 框架 -46.支持模块级别和用例级别参数化
    前言对parameters功能做了优化,支持模块级别和用例级别参数化config中parameters参数化,作用域是整个模块级别用例中parameters参数化,作用域只针对单个用例v1.3.7版本优化此功能模块级别参数化config中parameters参数化,作用域是整个模块级别,test_a.yaml文件示例......
  • 代码随想录|动态规划
     392.判断子序列 115.不同的子序列   583. 两个字符串的删除操作  72. 编辑距离 编辑距离总结篇392.判断子序列和昨天的最长重复子串一样,只要计算两者的重复长度是不是和s一样就行了。但是还是不如双指针的时间复杂度O(nm)O(nm)classSolution:de......
  • 代码随想录|动态规划-编辑距离
     392.判断子序列 115.不同的子序列   583. 两个字符串的删除操作  72. 编辑距离 编辑距离总结篇392.判断子序列和昨天的最长重复子串一样,只要计算两者的重复长度是不是和s一样就行了。但是还是不如双指针的时间复杂度O(nm)O(nm)classSolution:de......
  • 946. 验证栈序列
    1.题目读题 考查点 2.解法思路思路:遍历pushed数组,将元素入栈,然后判断栈顶元素是否与popped数组中的元素相同,如果相同,就出栈,并移动popped数组的指针,否则继续入栈。最后判断栈是否为空,如果为空,返回true,否则返回false。  代码逻辑具体实现publicboolean......
  • (Leetcode)746
    //方式一:第一步不支付费用classSolution{publicintminCostClimbingStairs(int[]cost){intlen=cost.length;int[]dp=newint[len+1];//从下标为0或下标为1的台阶开始,因此支付费用为0dp[0]=0;dp[1]=0;......
  • ASL芯片CS5466方案设计|集睿致远CS5466代理商|Type-c转HDMI电路原理
    CS5466作为ASL集睿致远新推出的高性能Type-CtoHDMI2.1协议转换器,可以通过HDMI输出端口作为TMDS或FRL发射机进行操作。CS5466适配于多个配件市场和现实应用主板,例如:主板,显示端口,扩展坞等。CS5266还配备了最高级别的HDCP嵌入式秘钥,能够安全传输受保护的内容,作为集睿致远ASL的一......
  • 2023-07-02:给定一个1~N的排列,每次将相邻两数相加,可以得到新的序列,长度是N-1 再对新的
    2023-07-02:给定一个1~N的排列,每次将相邻两数相加,可以得到新的序列,长度是N-1再对新的序列,每次将相邻两数相加,可以得到新的序列,长度是N-2这样下去可以最终只剩一个数字比如:31244367916现在如果知道N,和最后的数字sum,反推最原始的序列是什么如果有多个答案,返回字典序......
  • 【CF1146F】Leaf Partition
    这个题还是蛮有趣的,其实弄清楚这个染色的方案,这个题还是简单的。本质上只是对于考虑对于连通块染色,但是带有一些限制。所以我们考虑在LCA上拼接若干条根到叶子的路径。那我们就可以依据这一想法来设计状态。第一是这个点没有染色,那我们记这一状态为\(h\)。第二是这个点连......
  • 代码随想录|各种买卖股票问题
    121. 买卖股票的最佳时机 122.买卖股票的最佳时机II 123.买卖股票的最佳时机III  188.买卖股票的最佳时机IV 309.最佳买卖股票时机含冷冻期 714.买卖股票的最佳时机含手续费  总结121.买卖股票的最佳时机全程只能买卖一次贪心算法这个算法的写法也非......