单调栈与单调队列 不管是单调栈还是单调队列,都有金字塔形状和倒金字塔形状,按照具体题意分析; 单调栈问题类型: 在数组里面找到下一个比当前元素大的元素数值或下标、接雨水等等; 栈里面可以存下标或数值,建议存下标; 单调栈分为金字塔形状和倒金字塔形状; 按遍历方向不同,有不同的实现方式; 样式代码123456789101112131415161718192021222324252627282930313233 2022-07-31 数据结构与算法 #刷题 #数据结构 #算法 #单调栈 #单调队列
跳表 介绍 跳表全称叫做跳跃表,简称跳表。 跳表是一个随机化的数据结构,实质就是一种可以进行二分查找的有序链表。 跳表不仅能提高搜索性能,同时也可以提高插入和删除操作的性能。 跳表可以被看做二叉树的一个变种,它在性能上和红黑树,AVL树不相上下,但是跳表的原理非常简单,目前在Redis中有用到。 跳表采用随机技术决定链表中哪些节点应增加向前指针以及在该节点中应增加多少个指针。跳表结构的头节点需有足够的指 2022-07-31 数据结构与算法 #刷题 #数据结构 #算法 #跳表
删除二叉树节点 普通二叉树删除普通二叉树的节点,用交换值的操作,使用有返回值的递归,可以通过返回值来移除节点; 代码中目标节点(要删除的节点)被操作了两次: 第一次是和目标节点的右子树最左面节点交换。 第二次直接被nullptr覆盖了。 123456789101112131415161718192021class Solution {public: TreeNode* deleteNode(T 2022-07-25 数据结构与算法 #刷题 #数据结构 #算法 #二叉树
重建二叉树 重建普通二叉树 优化,借助下标索引,而不是vector; 不能从前序和后序重建; 左闭右开(或左闭右闭)就是循环不变量; 一、从中序和后序重建①传vector12345678910111213141516171819202122232425262728293031323334353637383940414243444546class Solution {public: TreeN 2022-07-25 数据结构与算法 #刷题 #数据结构 #算法 #二叉树
遍历二叉树 深度优先遍历(栈)保证入栈节点不是空节点! 前序遍历(中左右)递归1234567891011void visit(TreeNode* cur, vector<int>& res){ if(cur == nullptr) return; res.push_back(cur->val); //中 visit(cur->left, res); //左 vis 2022-07-25 数据结构与算法 #刷题 #数据结构 #算法 #二叉树
二叉树基本概念 树 结点的度:节点拥有的子树数; 树的度:树内各结点度的最大值; 结点的层次从根开始定义,根为第一层; 树的深度或高度:树中结点的最大层次; 路径长度:路径上的分支数目; 树的路径长度是从树根到每一结点的路径长度之和,完全二叉树路径长度最短; 二叉树节点的深度:指从根节点到该节点的最长简单路径边的条数。 二叉树节点的高度:指从该节点到叶子节点的最长简单路径边的条数。 二叉树 二叉树每个 2022-07-25 数据结构与算法 #刷题 #数据结构 #算法 #二叉树
Makefile使用 介绍 当一个工程里面的源文件非常多时,手动敲命令就比较麻烦,就可以使用makefile; Makefile 文件定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 Makefile 文件就像一个 Shell 脚本一样,也可以执行操作系统的命令; Makefile 带来的好处就是“自动化编译” ,一旦写好,只需要一个 make 命令 2022-07-23 Linux #Linux #Makefile
GNU编译工具使用 安装12345678sudo apt update# 通过以下命令安装编译器和调试器sudo apt install build-essential gdb# 查看版本号gcc --versiong++ --versiongdb --version gcc/g++基本用法1234gcc filename -o outputfileName# gdb支持gcc filename -g - 2022-07-23 Linux #GNU #Linux #GCC #G++ #GDB
Linux下Vim编辑器的使用 command mode 首先进入的就是命令模式。 模式切换 i 切换到输入模式,以输入字符; : 切换到底线命令模式,以在最后一行输入命令; 移动光标 方向键 移动光标; h/j/k/l 光标左、下、上、右移动一个字符,30j表示下移光标30行; pg up/dn 上下翻页; ctrl + b/f 上下翻页; ctrl + u/d 2022-07-23 Linux #Linux #Vim
Git使用和常用命令 第一次下载123456apt-get install gitgit config --global user.name "zyue" # your namegit config --global user.email "3506656950@qq.com" # your emailgit config --global core.edit 2022-07-23 Linux #Linux #Git #Github