Day28 | 回溯算法 组合&&组合总和III
代码随想录 | Day28 | 回溯算法:组合&&组合总和III关于这个章节,大家最好是对递归函数的理解要比较到位,听着b站视频课可能呢才舒服点,可以先去搜一搜关于递归函数的讲解,理解,再开始这个章节会比较好一些 我觉得回溯就是对传入递归函数的参数加加减减,加了的减掉,减了的加上 主要学习内容: 组合题目的模板 77.组合77. 组合 - 力扣(LeetCode) 解法思路:首先,把问题转换为树形结构,树的每一层的各个结点都是由本层逻辑的for循环产生的,树的深度是由我们所求集合的大小决定的。 我们在第一层取出一个数字,第一层就是 1 ,2 ,3 ,4 第二层从剩余的集合中取出一个数字,那就是 [1,2] [1,3] [1,4] …. 而我们集合大小为2,那么就只有这两层,树的深度也就这两层 而我们选完[1,2]怎么返回[1]的时候去选择[1,3]呢? 这时候就是回溯算法,回溯就是恢复你选择之前的状态,让你去选择另外一个,本质上是穷举的思想 1.函数参数和返回值 12vector<vector<int>> res; void...
尚硅谷 | Nginx | 学习笔记
尚硅谷 | Nginx | 学习笔记尚硅谷Nginx教程由浅入深(一套打通丨初学者也可掌握)_哔哩哔哩_bilibili 正向隐藏客户端,反向隐藏服务器端 一、Nginx相关概念1.Nginx是什么 Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、简单的配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。 Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。 Nginx...
Day27 | 二叉树 将有序数组转换为二叉搜索树&&二叉搜索树转换为累加树
代码随想录 | Day27 | 二叉树:将有序数组转换为二叉搜索树&&二叉搜索树转换为累加树主要学习内容: 1.构建二叉树 2.二叉搜索树转换为累加树的思路,主要是性质的运用 108.将有序数组转换为二叉搜索树108. 将有序数组转换为二叉搜索树 - 力扣(LeetCode) 解法思路:和从中序和后序构建二叉树一个思路 1.函数参数和返回值 1TreeNode *tra(vector<int> nums) 返回当前已经构建好的结点,如果不返回这个的话,我们无法的得到构建好的根节点,传入的是构建以当前节点为根结点的子树需要的数 2.终止条件 直到没有数即没有结点要构建就是结束 12if(nums.size()==0) return nullptr; 3.本层代码逻辑 首先将数组正中间的值设为根结点,即数组的分割点,因为我们要构建的是二叉搜索树 左子树就是前半段,右子树就是后半段,然后递归调用前半段和后半段就行 我这里用的是左闭右开区间,左子树...
SGI STL二级空间配置器源码剖析
SGI STL二级空间配置器源码剖析笔者建议配合这两篇博客进行学习 侯捷 | C++ | 内存管理 | 学习笔记(二):第二章节 std::allocator-CSDN博客 施磊C++ | 项目实战 | 手写移植SGI STL二级空间配置器内存池 项目源码-CSDN博客 大块内存都是malloc和free来进行分配回收。 但是要进行大量频繁的小块内存的分配和释放就要用到内存池的思想,因为频繁调用malloc和free的效率并不高。 (具体可以看侯捷 | C++ | 内存管理 | 学习笔记(二):第二章节 std::allocator-CSDN博客) 防止小块内存频繁的分配,释放,造成内存很多的碎片出来,内存没有更多的连续的大内存块。所以应用对于小块内存的操作,一般都会使用内存池来进行管理。 1.SGI STL的vector容器源码如何管理对象C++ STL标准库 =>...
手写移植SGI STL二级空间配置器内存池
手写移植SGI STL二级空间配置器内存池笔者建议配合这两篇博客进行学习 侯捷 | C++ | 内存管理 | 学习笔记(二):第二章节 std::allocator-CSDN博客 施磊C++ | 项目实战 | SGI STL二级空间配置器源码剖析-CSDN博客 考虑的问题:多线程安全 空间配置器是容器使用的,而容器产生的对象是很有可能在多个线程中去操作的 1.大致框架1.四个函数定义 2.重要的类型变量 3.两个辅助函数 4.静态成员函数初始化 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899#pragma once#include<mutex>//移植SGI STL二级空间配置器内存池 源码template<typename...
Day26 | 二叉树 二叉搜索树中的插入操作&&删除二叉搜索树中的节点
代码随想录 | Day26 | 二叉树:二叉搜索树中的插入操作&&删除二叉搜索树中的节点701.二叉搜索树中的插入操作701. 二叉搜索树中的插入操作 - 力扣(LeetCode) 解法思路:本质就是二叉搜索树的查找,找到插入的地方就行 val比本层结点t的值大,去右子树,小,去左子树,如果左子树或者右子树为空,直接把val赋值给它就完事。 1.函数参数和返回值 1void tra(TreeNode *t,int val) t当前节点,val是插入值 2.终止条件 本题只要赋值操作结束就是终止条件 3.本层代码逻辑 1234567891011121314151617181920//比本层小,去左子树if(t->val>val) if(t->left) tra(t->left,val); //左子树为空,直接赋值返回 else { t->left=new TreeNode(val); ...
侯捷内存管理学习笔记 | C++
侯捷内存管理学习笔记第一章节 primitives零.new和delete概述C++中的new和delete是用于动态内存分配和释放的操作符,它们的底层机制和工作原理相对复杂,但也可以简单清晰地解释。 new的底层机制和工作原理 内存分配: 当使用new操作符时,它首先会调用底层的内存分配函数(如operator new),这个函数通常是对malloc的封装。malloc会从堆中分配足够的内存空间。 如果内存分配失败,operator...
Source insight源码查看工具的使用
Source insight源码查看工具的使用常用的基本操作新建工程点击new project 在源代码同级目录下创建一个insight,将我们的项目工程放在这里(这样只是方便好找) 刚刚创建的文件和源码文件同级,点击源码文件,点击Add Tree 添加完毕后直接关了就行 之后点击project->synchronize Files进行同步,点击start,然后同步完关闭 这样做直接就可以把修改同步到源码文件上面了 点击菜单这个P图标 侧边出现这样的目录 有些.cc文件出不来的更改操作 点击菜单栏options->file type options 在filefilit处加上 ,*.cc 注意是英文的 添加后关闭 之后点击project的add and remove project file重新Add tree一下就有了 查看文件在P图标点击后直接在搜索栏搜索就行 后面的project symbols可以直接搜想看的函数 快捷键设置options-> key...
Day25 | 二叉树 从中序与后序遍历构造二叉树&&最大二叉树
代码随想录 | Day25 | 二叉树:从中序与后序遍历构造二叉树&&最大二叉树主要学习内容:用中序和后序来构建二叉树 106.从中序与后序遍历构造二叉树106. 从中序与后序遍历序列构造二叉树 - 力扣(LeetCode) 解法思路:先想想如果没有这个图的话,我们会如何把根据这两个数组把树画出来。 1.中序是左中右,后序是左右中,说明后序数组的末尾肯定是当前还没构造的部分的根结点 2.接下来再根据这个值去中序里面找,找到的话,那它的前面就是左子树,后面就是右子树 3.根据中序数组左子树结点数量,可以确定后序数组中左右的分界,这样就找到了中序和后序数组中,左子树和右子树的范围 4.也就是分别找到了左子树和右子树他们自己的中序和后序数组 5.递归左子树和右子树的中序后序数组,建立左右子树,知道整棵树构建完毕 比如下面,这张图的构造过程 1.先找到根结点3 2.3前面是左子树9,后面是右子树15,20,7 3.左子树大小为1说明,后序数组前面1个数是左子树,到末尾的根结点前是右子树15,7,20 4.左子树中序 :9 后序:9 右子树中序 :15 20 7 ...
Day24 | 二叉树 二叉树的公共祖先(有个自己的想法)&&二叉搜索树的公共祖先
代码随想录 | Day24 | 二叉树:二叉树的公共祖先(有个自己的想法)&&二叉搜索树的公共祖先主要学习内容: 1.一般需要向上返回下层结点的内容信息或者判断结果的话都是后序遍历 2.二叉搜索树的性质:左右子树和根结点的大小关系 236.二叉树的最近公共祖先236. 二叉树的最近公共祖先 -...