首页 > 其他分享 >day21

day21

时间:2024-09-09 11:47:17浏览次数:5  
标签:used nums day21 back vector path size

  1. 非递减子序列

class Solution {
public:
void backtracking(vector &nums, int start)
{
if(path.size() > 1)
{
ret.push_back(path);
}
if(start == nums.size())
{
return;
}
unordered_set uset;
for(int i = start; i < nums.size(); ++i)
{
if((!path.empty() && nums[i] < path.back()) || (uset.find(nums[i]) != uset.end()))
{
continue;
}
uset.insert(nums[i]);
path.push_back(nums[i]);
backtracking(nums, i+1);
path.pop_back();
}
}
vector<vector> findSubsequences(vector& nums) {
backtracking(nums, 0);
return ret;
}
private:
vector path;
vector<vector> ret;
};

  1. 全排列

class Solution {
public:
void backtracking(vector &nums, vector &used)
{
if(path.size() == nums.size())
{
ret.push_back(path);
return;
}
for(int i = 0; i < nums.size(); ++i)
{
if(used[i] == 1)
{
continue;
}
path.push_back(nums[i]);
used[i] = 1;
backtracking(nums, used);
path.pop_back();
used[i] = 0;
}
}
vector<vector> permuteUnique(vector& nums) {
vector used(nums.size(), 0);
backtracking(nums, used);
return ret;
}
private:
vector path;
vector<vector> ret;
};
3. 全排列II

class Solution {
public:
void backtracking(vector &nums, vector &used)
{
if(path.size() == nums.size())
{
ret.push_back(path);
return;
}
unordered_set uset;
for(int i = 0; i < nums.size(); ++i)
{
if(used[i] == 1 || uset.find(nums[i]) != uset.end())
{
continue;
}
uset.insert(nums[i]);
path.push_back(nums[i]);
used[i] = 1;
backtracking(nums, used);
path.pop_back();
used[i] = 0;
}
}
vector<vector> permuteUnique(vector& nums) {
vector used(nums.size(), 0);
backtracking(nums, used);
return ret;
}
private:
vector path;
vector<vector> ret;
};

标签:used,nums,day21,back,vector,path,size
From: https://www.cnblogs.com/pwangikun/p/18404276

相关文章

  • NOIP2024集训Day21 DP常见模型2 - 背包
    NOIP2024集训Day21DP常见模型2-背包A.[BZOJ4987]Tree树形背包dp先考虑几个显而易见的性质:选出的点一定是相邻的对于选出的点,如果从\(a_k\)再走回\(a_1\),那么就相当于每条边经过了两次由于题目没有包含\(dis(a_k,a_1)\),因此就相当于选出的点中的一条链可以只......
  • 代码随想录Day21
    669.修剪二叉搜索树给你二叉搜索树的根节点root,同时给定最小边界low和最大边界high。通过修剪二叉搜索树,使得所有节点的值在[low,high]中。修剪树不应该改变保留在树中的元素的相对结构(即,如果没有被移除,原有的父代子代关系都应当保留)。可以证明,存在唯一的答案。所......
  • Day21 二叉树Part8
    目录任务669.修剪二叉搜索树思路108.将有序数组转换为二叉搜索树思路538.把二叉搜索树转换为累加树思路心得体会任务669.修剪二叉搜索树给你二叉搜索树的根节点root,同时给定最小边界low和最大边界high。通过修剪二叉搜索树,使得所有节点的值在[low,high]中。修剪树不......
  • 24暑假算法刷题 | Day21 | LeetCode 669. 修剪二叉搜索树,108. 将有序数组转换为二叉搜
    目录669.修剪二叉搜索树题目描述题解108.将有序数组转换为二叉搜索树题目描述题解538.把二叉搜索树转换为累加树题目描述题解669.修剪二叉搜索树点此跳转题目链接题目描述给你二叉搜索树的根节点root,同时给定最小边界low和最大边界high。通过修剪二叉......
  • Day21 | 530.二叉搜索树的最小绝对差、501.二叉搜索树中的众数 、236. 二叉树的最近公
    530.二叉搜索树的最小绝对差需要领悟一下二叉树遍历上双指针操作,优先掌握递归题目链接/文章讲解:https://programmercarl.com/0530.二叉搜索树的最小绝对差.html视频讲解:https://www.bilibili.com/video/BV1DD4y11779思考中序遍历的同时,用pre记录一下上一个节点。classSolut......
  • Day21.软件开发的目录规范part1_ATM创建
    1.软件开发的目录规范part1_ATM文件结构2.软件开发的目录规范part1_ATM中bin目录下start文件代码内容3.软件开发的目录规范part1_ATM中conf目录下settings文件代码内容4.软件开发的目录规范part1_ATM中core目录下src文件代码内容 ......
  • Day21.函数的类型提示
    1.函数的类型提示_函数常规传参2.函数的类型提示_函数参数设置默认值3.函数的类型提示__annotations__方法查看参数传参类型 ......
  • m1_day21
    课程内容:枚举时间类枚举:enum当希望一个类的对象是有限个确定的非常使用枚举类型【枚举其实就是列举一个类的对象有哪些当需要使用的时候从已创建的对象中进行选择】四大类型:classinterfaceenum@interface类接口枚举注解如何定义枚举jdk5.0之......
  • day21-阶段总结
    1.知识点补充1.1并发编程&网络编程从知识点的角度来看,本身两者其实没有什么关系:网络编程,基于网络基础知识、socket模块实现网络的数据传输。并发编程,基于多进程、多线程等来提升程序的执行效率。但是,在很多“框架”的内部其实会让两者结合起来,使用多进程、多线......
  • day21java学习打卡:匿名对象的使用
    /* *一.理解“万事万物皆对象” *1.在java语言范畴中,我们的都将功能,结构封装到类中,通过类的实例化, *来调节具体的功能结构 *  >Scanner,String *  >文件:File *  >网络资源:URL *2.涉及到Java语言与前端HTML,后端的数据库交互时,前后端的结构在ja......