01 2021 档案
摘要:序列化其实就是二叉树遍历,根据特定的要求按照要求格式输出就行反序列化跟序列化对应上,一般来讲只知道某一个遍历的序列是无法还原二叉树的,但是题目给出的序列带有nullptr空指针,所以是可以的 中序遍历是无法反序列化的,因为不知道根节点的具体索引 前序、后序、层序都可以进行反序列化,以下给出了前序遍历
阅读全文
摘要:关于BFS的理论知识参考labuladong大佬的总结 https://labuladong.gitbook.io/algo/bi-du-wen-zhang/bfs-kuang-jia BFS相关题目,一定要牢记一套代码框架,不同的题目基本都能通过套用框架解决: int BFS(Node start
阅读全文
摘要:/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), r
阅读全文
摘要:高效率:快速从大量数据中找到你想要的数据 所有元素在插入时会根据key值自动排序 #include<iostream> #include<map> using namespace std; void printMap(const map<int, int>& m) { for (map<int, i
阅读全文
摘要:两个的头文件包含set即可 插入数值只有insert方法 不允许重复 #include<iostream> #include<set> #include<string> using namespace std; // set容器的构造和赋值的操作 void test01() { set<int> s
阅读全文
摘要:优点:可以怼任意位置进行快速的插入和删除元素 缺点:容器遍历速度没有数组快 占用空间比数组大(数据域和指针域) 双向循环链表! 双向迭代器! list和vector是最常被使用的容器 #include<iostream> #include<list> using namespace std; //
阅读全文
摘要:队头只能出数据,队尾只能进数据 只有队头和队尾才能被外界访问 empty() 判断是否为空 size() 返回队列的大小
阅读全文
摘要:入栈和出栈 栈顶元素:top() 栈不允许有遍历行为 遍历:非质变算法 栈可以判断容器是否为空吗? 可以。empty()判断 栈可以返回元素个数吗? 可以。size() 入栈记录 STL中提供的栈接口
阅读全文
摘要:vector对头部的插入删除需要移动元素 deque头端也是开的 vector内部结构是一段连续空间 中控器维护,像一段连续的空间 访问元素速度没有vector快,因为内部的实现 deque容器的迭代器也是支持随机访问的! #include<iostream> #include<deque> usi
阅读全文
摘要:单端数组 数组是静态空间,但是vector可以动态扩展 动态扩展:并不是在原空间后续接新空间,而是找更大的内存空间,然后将原数据拷贝到新空间,释放原空间。 因为没法保证后面的空间是不是空闲的 vector的迭代器是一个很强大的迭代器,因为它支持随机访问! vector是单端数组,因为前端是封闭的,只
阅读全文
摘要:补充: #include<string> 头文件中其实还包含了一些函数很有用,比如to_string()函数,函数名称在std中,函数能够将各种类型的数字转换成字符串! #include<cstring> 是C语言的头文件,里头包含了一些常用的函数,比如atoi和stoi,二者都能将数字字符串转换成
阅读全文
摘要:#include<iostream> #include<vector> #include<algorithm> // stl标准算法头文件 using namespace std; // vector容器存放内置数据类型 void myPrint(int val) { cout << val <<
阅读全文
摘要:函数的返回值不作为函数重载的条件。 这俩属于类型不同,可以发生函数重载。 int a = 10; fun(a); // 调用可读可写的fun fun(10);// 调用常量引用的fun 为什么? 坑2:碰到默认参数 func2(10); // 这时候肯定出错,不知道调用哪个了,出现了二义性,报错,尽
阅读全文
摘要:本质:给变量起别名 必须初始化,初始化完不可以改变。 优点:简化指针修改实参!非常有用,降低了指针的难度 #include<iostream> using namespace std; // 1.值传递 void mySwap01(int a, int b) { int temp = a; a =
阅读全文
摘要:代码区:所有的代码都会放这里 全局区: 栈:由编译器管理内存的分配和释放 堆:由程序员分配和释放 代码区和全局区都是程序运行前分配的两个区域 全局区:全局变量、静态变量、常量(const) 只要没有写到函数体中的都是全局变量 static静态变量也会放到全局区 常量: 字符串常量:双引号引起来的都是
阅读全文
摘要:C++中有一个文件流:fstream 操作文件的三大类: ofstream:写操作,文件的输出流 ifstream:读操作 fstream:读写操作 #include<iostream> #include<fstream> using namespace std; // 文本文件中的写文件 void
阅读全文
摘要:类型和变量 类型=类型数据+类型操作,比如整型 数据结构=结构定义+结构操作 C++内部类型其实都是数据结构,类只是C++让我们自己来创造数据结构 数据结构的核心思想永远都是封装,将数据和行为封装到一起,也就是结构定义和结构操作封装到一起。反应到C++中其实就是类和对象这部分知识。 类其实就是数据类
阅读全文
摘要:队列:先进先出 栈:先进后出 几个基础的问题: C++中stack 是容器么? 我们使用的stack是属于那个版本的STL? 我们使用的STL中stack是如何实现的? stack 提供迭代器来遍历stack空间么? 栈和队列和C++STL里面的两个数据结构。 栈:先进后出 栈提供push、pop等
阅读全文
摘要:/******************************************/ 二叉树的问题,一定要明白到底应该深度优先(前中后序)还是广度优先(层序遍历) 最基本的遍历方式:深度优先和广度优先 深度优先:前、中、后序(递归法和迭代法均可) 广度优先:层次遍历(迭代法) 栈其实就是递归的一
阅读全文
摘要:C++的异常处理机制为程序中异常检测和异常处理两部分的协作提供支持。在C++语言中,异常处理包括: throw表达式,异常检测部分使用throw表达式来表示它遇到了无法处理的问题。我们说throw引发了异常。 try语句块,异常处理部分使用try语句块处理异常。try语句块以关键字try开始,并以一
阅读全文
摘要:什么是贪心? 贪心的本质是选择每一阶段的局部最优,从而达到全局最优 什么时候用贪心? 贪心没有固定的套路,关于什么时候用贪心,最好的策略就是举反例,如果想不到反例,就试一试贪心 刷题或者面试的时候,可以手动模拟一下感觉可以局部最优推出整体最优而且想不到反例,那就可以试一试贪心4 贪心一般的解题步骤:
阅读全文