![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法学习
文章平均质量分 75
Mamba_Stan
这个作者很懒,什么都没留下…
展开
-
二叉树的深度和高度
给定一个二叉树, 找出其最大深度。二叉树的深度为根节点到最远叶子节点最长路径上的节点数。如二叉树 [ 3, 9, 20, null, null, 15, 7 ]的最大深度为3:先看一个简单的情况:对于节点 3, 最大深度自然是左右子节点 + 1, 左右子节点都有可能为空, 但只要有一个, 树的最大高度就是 1 + 1 = 2。然后再增加几个节点:而对于节点 3, 则是左右子树深度最大的那个然后 + 1, 具体谁更大, 并不关心。原创 2023-09-07 09:37:26 · 5765 阅读 · 0 评论 -
二叉树的经典算法题
LeetCode100:给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。输入:p = [1,2,3], q = [1,2,3]输出:true输入:p = [1,2], q = [1,null,2]输出:false两个二叉树同时进行前序遍历, 先判断根节点是否相同, 如果相同再分别判断左右子节点是否相同, 判断的过程中只要有一个不相同就返回 false, 如果全部相同才返回 true。原创 2023-09-06 10:42:31 · 160 阅读 · 1 评论 -
迭代实现二叉树的遍历
前序遍历是中左右, 如果还有左子树就一直向下找, 之后再从最底层逐步向上向右找。原创 2023-09-06 09:27:21 · 112 阅读 · 1 评论 -
二叉树的层次遍历
从根节点开始, 先访问根节点下面一层全部元素, 再访问之后的层次。原创 2023-08-30 14:35:06 · 871 阅读 · 1 评论 -
数据结构——树
int val;这里本质上就是两个引用, 分别指向了两个位置, 为了方便理解, 分别命名为左孩子和有孩子。int val;除了使用链表, 也可以使用数组来存储二叉树:使用数组存储的最大不足是可能存在大量的空间浪费。原创 2023-08-30 09:46:26 · 215 阅读 · 1 评论 -
队栈和Hash的经典算法题
仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作 (push、pop、peek、empty)void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移除并返回元素int peek() 返回队列开头的元素boolean empty() 如果队列为空,返回 true;否则,返回 false将一个栈当作输入栈, 用于压入 push 传入的数据;另一个栈当作输出栈, 用与 peek 和 pop 操作。原创 2023-08-24 11:36:27 · 30 阅读 · 1 评论 -
队列的基本概念
队列的特点是节点的排队次序和出队次序按入队时间先后确定, 即先入队者先出队, 后入队者后出队, 即我们常说的FIFO (first in first out)先进先出。原创 2023-08-24 09:09:04 · 42 阅读 · 1 评论 -
栈—计算器问题解析
使用栈, 遍历字符串, 并用变量preSign记录每个数字之前的运算符, 对于第一个数字, 其之前的运算符视为 + 号。给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。整数除法仅保留整数部分。你可以假设给定的表达式总是有效的。所有中间结果将在 [-231, 231 - 1] 的范围内。注意:不允许使用任何将字符串作为数学表达式计算的内置函数,比如 eval()。遍历完字符串s后, 将栈中元素累加, 即为该字符串表达式的值。输入:s = “3+2*2”原创 2023-08-21 22:53:27 · 38 阅读 · 1 评论 -
栈的经典算法问题
给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。示例1:输入:s = “()[]{}”输出:true遍历字符串, 遇到左括号就入栈, 遇到右括号就与栈顶符号比较, 不匹配就返回false。原创 2023-08-16 09:22:28 · 25 阅读 · 1 评论 -
基于数组(或者链表)实现栈
栈是比较特殊的线性表, 又称之为访问受限的线性表。栈是很多表达式、符号等运算的基础, 也是递归的底层实现。栈底层实现仍然是链表或者顺序表, 栈与线性表的最大区别在于 数据的存储被限制了, 其插入和删除操作只允许在线性表的一端进行。一般而言, 把允许操作的一端称为栈顶 (Top), 不可操作的一端称为栈底(Bottom), 同时把插入的操作称为入栈 (Push), 删除元素的操作称为出栈 (Pop)。若栈中没有任何元素, 则称为空栈。原创 2023-08-15 21:52:23 · 42 阅读 · 0 评论 -
算法通关村——双指针的妙用
给你一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,并返回移除后数组的新长度。要求:不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并原地修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。例子1:输入:nums = [3,2,2,3], val = 3输出:2, nums = [2,2]例子2:输入:nums = [0,1,2,2,3,0,4,2], val = 2输出:5, nums = [0,1,4,0,3]原创 2023-08-15 16:52:33 · 19 阅读 · 0 评论 -
编程导航算法通关村第一关 | 初识链表
将尾节点的前一个节点指向 null 即可。原创 2023-07-24 16:37:27 · 122 阅读 · 0 评论