Home
  • 首页
  • 归档
  • 分类
  • 标签
  • 关于

灵神基础算法精讲-11-学习笔记

98. 验证二叉搜索树给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下: 节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。 思路1在递归的时候,除了传入节点,还需要传入这个开区间的范围,对于每个节点,先判断它的节点值是否在开区间内,然后再往下递归,那如果往左边递归,那就把开区间
2024-12-27
LeetCode
#二叉树

灵神基础算法精讲-10-学习笔记

100. 相同的树给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 思路相同的定义:首先根节点必须是相同的,然后就看左子树是否相同,右子树是否相同,这样可以看出要解决的子问题,就是左边两颗子树是否相同,以及右边两颗子树是否相同,这样就可以用递归来解决了,边界条件是如果两个子节点都是空,就返回 true,否
2024-12-26
LeetCode
#二叉树

灵神基础算法精讲-09-学习笔记

104. 二叉树的最大深度给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 思路1做二叉树题目的时候往往需要用到递归,不要一开始就陷入细节,而是思考整棵树与其左右子树的关系。 整棵树的最大深度 = max(左子树的最大深度,右子树的最大深度) + 1 计算左子树右子树的最大深度和计算整棵树的最大深度是相似的,分别叫做子
2024-12-25
LeetCode
#二叉树

灵神基础算法精讲-08-学习笔记

237. 删除链表中的节点有一个单链表的 head,我们想删除它其中的一个节点 node。 给你一个需要删除的节点 node 。你将 无法访问 第一个节点 head。 链表的所有值都是 唯一的,并且保证给定的节点 node 不是链表中的最后一个节点。 删除给定的节点。注意,删除节点并不是指从内存中删除它。这里的意思是: 给定节点的值不应该存在于链表中。链表中的节点数应该减少 1。node 前面的
2024-12-24
LeetCode
#链表

灵神基础算法精讲-07-学习笔记

876. 链表的中间结点给你单链表的头结点 head ,请你找出并返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。 思路用两个指针指向链表的头节点,一个叫慢指针,一个叫快指针,每次循环慢指针走一步,快指针走两步,比如链表长度为 3 时,循环一次后,慢指针就指向中间节点了。 用数学归纳法可以证明,当链表长度为奇数时,快指针在最后一个节点时,慢指针一定在中间节点,对于偶数长度也是一样,
2024-12-23
LeetCode
#链表

灵神基础算法精讲-06-学习笔记

206. 反转链表给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 思路用火车来类比链表,链表的第一个节点也叫头节点,可以看成是火车头,其余节点可以看成是车厢,链表的每个节点都包含节点值和指向下一个节点的 next 指针,注意链表的最后一个节点指向空。 如果要反转链表,那么链表的第一个节点,它的 next 应该指向空,链表的其余节点,它们的 next 应该反过来指向它的上一个节点
2024-12-22
LeetCode
#链表

灵神基础算法精讲-05-学习笔记

162. 寻找峰值峰值元素是指其值严格大于左右相邻值的元素。 给你一个整数数组 nums,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回 任何一个峰值 所在位置即可。 你可以假设 nums[-1] = nums[n] = -∞ 。 你必须实现时间复杂度为 O(log n) 的算法来解决此问题。 做法定义红色为峰顶左侧元素,蓝色为峰顶或峰顶右侧元素。由于峰顶一
2024-12-21
LeetCode
#二分查找

灵神基础算法精讲-04-学习笔记

34. 在排序数组中查找元素的第一个和最后一个位置给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target,返回 [-1, -1]。 你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。 思路利用数组是有序的这个性质,初始化两个指针,L为0,R为n-1,我们现在需要知道这个闭区间
2024-12-20
LeetCode
#二分查找

灵神基础算法精讲-03-学习笔记

209. 长度最小的子数组给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的子数组 [numsl, numsl+1, …, numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。 暴力做法枚举子数组的左端点,不断向右扩展,直到达到target为止;也可以枚举子数组的右端点,不断向左扩展,直到达
2024-12-19
LeetCode
#滑动窗口

灵神基础算法精讲-02-学习笔记

11. 盛最多水的容器给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 思路容器的高度取决于容器两端更短的那条边,容器的宽度取决于容器两端之间的距离,也就是下标的差。 思考短的那条边,如果它和中间的边构成容
2024-12-18
LeetCode
#相向双指针
1234

搜索

正在载入天数... 载入时分秒...
Hexo Fluid