自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 问答 (2)
  • 收藏
  • 关注

原创 hot100 二叉树

【对称二叉树】使用mirror函数递归比较 a节点的左叶子和b节点的右叶子,a节点的右叶子和b节点的左叶子。【二叉树的最大深度】dfs 递归算法,节点为空,判断一波max,进入左节点时,depth++ 退出 遍历完右节点 depth--【二叉树的直径】后序递归遍历子节点,对于每个节点,它的最大直径为左子树高度+右子树高度-1,然后向父亲节点返回当前节点的高度。【二叉树的中序遍历】:为什么叫中序,根节点被访问的位置。前序:根 -> 左 -> 右。中序:左 -> 根 -> 右。后序:左 -> 右 -> 根。

2026-07-09 00:35:39 209

原创 hot100数组

版本一:nums[i]除了自身以外数组的乘积 = left[i] * right[i],left[i]表示数字i左边的乘积,right[i]表示数字i右边的乘积。right计算:从nums末尾开始遍历,但是rightp[-1] = 1,因为 nums[-1] 右边没数字了。遍历数组,当dp[i-1]小于0的时候,说明前面会拖累,dp[i] = num[i];【56 合并区间】:intervals = [[1,3],[2,6],[8,10],[15,18]], 向将intervals按照第一个元素升序排序。

2026-04-10 16:55:35 24

原创 hot100图论

开始遍历课程i,根据矩阵[i][j],依次DFS搜索前置课程,若搜索到的课程出现过在目前正在搜索的课程中,则成环。【腐烂的橘子】:先遍历矩阵,记录腐烂橘子位置,新鲜橘子个数。将腐烂橘子放入一个数组里,遍历腐烂,直到数组长度为0,每次遍历将新感染的橘子假如数组,剔除旧的腐烂橘子,并减少新鲜橘子数据。DFS时,注意判断边界。有时候需要维护一个数据结构如矩阵来记录当前的访问状态,可以直接修改原数据,从而节省内存,如岛屿数量,腐烂的橘子。判断当前格子是否是陆地,是,标记当前格子访问过,则向上下左右继续DFS;

2026-03-20 15:58:16 38

原创 hot100回溯

若合法,记录当前棋子的位置到queens中,然后往下一行放棋子。其核心思想是:对于数组𝐴[𝑛],固定第𝑖个位置,将𝑖之后(包含𝑖)的每个元素依次与𝐴[𝑖]交换,然后递归处理𝑖+1位置,递归完成后再换回原位(回溯)以保持原始顺序。思路:和子集一样,从start到末尾,依次选择i作为方案中的数字,计算总和。若够了,方案确定,回溯;分割回文串:从start到末尾,选择第i个位置切割,判断前子字符串是否为回文串,若是,往后继续递归分割。子集:确定一个位置start,从start到末尾,依次选择i作为

2026-03-16 11:32:40 50

原创 hot100二分查找

【寻找两个正序数组中的中位数】:问题转化,奇数情况,中位数是合并数组后的第k小,偶数情况,是第k小+第k+1小的平均值 (k为合并数组后总长度/2)。那么可以比较第一个数组和第个数组的第k/2个数,哪个小,可以剔除哪边数组的k/2个数。技巧:当某个数组长度不足时,使用math.maxInt32作为哨兵值替换数组的第k/2个数的值。【旋转旋转排序数组中的最小值】:二分法找旋转点,旋转点一定比当前的最左边点小。总结:二分算法循环中,当最后一轮(最后一个数)需要比较时,用 left <= rihgt。

2026-03-10 11:57:37 33

原创 hot100动态规划

每次遍历,不选nums[i]则dp[i][j]=dp[i][j-1] 选nums[i], dp[i][j] = dp[i-1][j-nums[i]] 前提是nums[i] <= target 由于更新dp[i][...]只和dp[i-1][...]有关系,因此可以用一维dp,但是要注意dp可能会有重复。初始化 dp[i] = 1。打劫家舍:dp[i]表示偷到第i个家舍最多可以偷到多少钱 dp[i] = max(dp[i], dp[i-1] + nums[i]第i个家舍的钱)

2026-03-06 11:45:24 55

原创 hot100贪心算法

跳跃游戏②:用个变量记录当前步数最远能到达的距离,再用个变量记录当前步数加上下一条步数最远能到达的距离。不停遍历,当遍历的i超过当前步数最远能到达的距离,说明必须要跳下一步了。划分字母区间:先用个map记录每个字母最后出现的下标,用于参考划定字符串最后界限。不停遍历字符串,利用map更新字符串最远边界。买卖股票的最佳时机:记录从第0天开始到今天的历史股票购入最低价格。今天的购入价格减去历史购入最低价格。即可得到最大利润价格。跳跃游戏①:用个变量记录最远能到达的距离,遍历完后,判断变量能否到达最后一个下标。

2026-03-02 16:14:36 35

原创 hot100堆

数据流的中位数:搞两个堆,一个大堆,一个小堆,使得数据流中的数按大小对半分。就可以计算中位数了。总结:go中提供堆接口,需要自己实现,然后调用heap的push和pop。数组中的第K个大元素:方法1 堆,方法二:快排,然后按顺序取。前k个高频元素:先map统计元素频率,然后堆。

2026-03-02 10:17:44 29

原创 hot100栈

最小栈:在常数时间内检索到当前最小元素的栈。主栈正常维护,辅助栈维护每个栈顶元素对应的最小元数。柱状图中最大的矩形:遍历高度,单调栈维护高度,遇到小于栈顶高度时,触发,面积计算。字符串编码:用栈记录当前括号层级,pop后可计算pop栈的字符串内容。stack = stack[:len(stack)-1]出栈。

2026-02-28 16:42:29 54

原创 testtest

test。

2026-02-03 20:34:41 29

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除