自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 收藏
  • 关注

原创 leetcode 34. 在排序数组中查找元素的第一个和最后一个位置

二分查找的题目,使用二分查找去卡target最左边的区间,右边区间可以使用target+1去卡;

2025-07-29 22:06:01 170

原创 leetcode 74. 搜索二维矩阵

根据矩阵的特点,不需要把矩阵拉成一维,二维转成一维映射关系为a[i]=matrix[⌊i//n⌋][i%n];然后开始二分查找,一直二分的收缩区间;

2025-07-29 21:11:38 333

原创 leetcode 131. 分割回文串

DFS配合for循环,枚举子串结束位置,如果是子串,就以下一个位置为起点,递归下去,直到i==n,还要有恢复现场的操作;

2025-07-28 23:13:16 126

原创 leetcode 438. 找到字符串中所有字母异位词

滑动窗口大小为len(p),每次判断是否异位词相等,每次都会left的数量--,为零的话要删除键;

2025-07-28 14:48:10 91

原创 leetcode 3. 无重复字符的最长子串

先判断是否在hash table里再去更新hash table,首尾指针做差就是当前位置的最值。

2025-07-22 17:52:27 237

原创 leetcode 42. 接雨水

听过说是大厂面试coding考的比较多的题,双指针,左右夹击,每一步都要求最大值,左或右(左右也要判一下谁最大)的最大值和当前的差值就是当前能接到的雨水;

2025-07-21 15:39:00 137

原创 leetcode 15. 三数之和

排序+双指针,k是当前选择的元素,i、j是k之后的元素,重复判断的组合可以剔除掉,指针直接移位。

2025-07-21 15:29:17 111

原创 leetcode 11. 盛最多水的容器

双指针左右夹击的方式可以得到最值。

2025-07-18 15:35:29 288

原创 leetcode 283. 移动零

【代码】leetcode 283. 移动零。

2025-07-18 15:31:12 105

原创 leetcode 39. 组合总和

经典回溯题目,回溯会有剪枝。

2025-07-17 18:37:35 94

原创 17. 电话号码的字母组合

总结一下:递归的目的是解决问题的分解,回溯的目的是尝试所有可能+剪枝。所有组合的问题可以使用回溯来解决。

2025-07-16 21:54:27 157

原创 面试真题 找包围的O

思路:边界O肯定不是被包围的,所以DFS找到所有与边界O相邻的位置把他们做标记,未被标记的O替换成X,最后输出。某东coding题目。

2025-07-16 18:24:07 123

原创 leetcode 128. 最长连续序列

思路:首先使用set()保证元素唯一,然后找到数字的起点,下面就是每次增一找到终点,不断更新最后最大长度。题意为找到最长的数字连续序列的长度。

2025-07-16 16:01:08 180

原创 leetcode 78. 子集

【代码】leetcode 78. 子集。

2025-07-16 15:18:38 88

原创 leetcode 46. 全排列

总结搜索的方法:按顺序枚举每一位可能出现的情况,已经选择的数字在 当前 要选择的数字中不能出现。这样的思路,可以用一个树形结构表示。我们尝试在纸上写 3 个数字、4 个数字、5 个数字的全排列,相信不难找到这样的方法。以数组 [1, 2, 3] 的全排列为例。最后写以 3 开头的全排列,它们是:[3, 1, 2], [3, 2, 1],即 3 + [1, 2] 的全排列。再写以 2 开头的全排列,它们是:[2, 1, 3], [2, 3, 1],即 2 + [1, 3] 的全排列;

2025-07-15 22:03:25 409

原创 leetcode 207. 课程表 (有向无环图)

图论:BFS判断图是否是有向无环图(DAG),其中使用了邻接表adjacency。

2025-07-15 21:09:34 249

原创 leetcode 994. 腐烂的橘子

每次用被感染的橘子去污染后面的橘子,如果当前还有新鲜橘子上一轮没有感染橘子,那么感染所有橘子就是不可能。模拟广度优先搜索的过程。

2025-07-15 20:29:12 254

原创 leetcode 240. 搜索二维矩阵 II

某社交网站coding题,从左下角看才是二叉搜索树,最近面试coding写不出来。

2025-07-15 16:35:26 127

原创 leetcode 200. 岛屿数量

图论:dfs走过的地方另外做标记,dfs走上下左右不要越界,不要走已经走过的地方。

2025-07-14 18:26:04 430

原创 leetcode 236. 二叉树的最近公共祖先

写在底下的就是回溯,因为下面的是左右子树都遍历完了进行的return,那不就是回溯嘛!求二叉树的最近公共祖先,思路如下图,很妙。

2025-07-14 15:58:14 217

原创 leetcode 437. 路径总和 III

思路:可以通过暴力枚举起点和终点来得到序列的值,这样时间复杂度比较高;我们可以使用一个数组来存每个元素的前缀值,这样只需要枚举终点即可,每次记数是cnt[s-targetSum]个数,初始化时cnt[0]=1;这道题和560. 和为 K 的子数组这题是一样的,都是求子序列的值为targetSum的个数。注:这道题有回溯恢复状态的代码。

2025-07-11 18:03:10 231

原创 leetcode 560. 和为 K 的子数组

思路:先求出序列的前缀和,然后求cnt[sj-k]的数量,就是把前缀减掉,看看有多少个。

2025-07-11 16:58:19 109

原创 leetcode 105. 从前序与中序遍历序列构造二叉树

3.之后的根节点可以通过计算得到,后面依然是划分子树,后面的问题是一样了,用递归解决,先序里的元素在中序里的位置,可以通过字典dic去映射。2.拿到根节点,在中序序列里可以划分出左右子树。之后right的根为i-left+root+1。1.先序第一元素可以确定根节点。之后left的根为root+1。

2025-07-11 16:16:21 239

原创 leetcode 114. 二叉树展开为链表

思路:先遍历右子树,再遍历左子树,然后再进行头插法。头插法将二叉树展开为只有右子节点的树;

2025-07-11 14:46:09 377

原创 leetcode 199. 二叉树的右视图

extend(iterable),将一个可迭代对象中的数据按顺序添加到队列的尾部。这里要注意,字符串也是可迭代对象,如直接添加字符串'ABC',会将'A'、'B'、'C'添加到队列中,因为'ABC'会被当成一个可迭代对象进行迭代,要将'ABC'作为一个整体的字符串添加可以将其放到列表中,添加['ABC']才会符合预期。append(item),添加一个数据到队列的尾部。extendleft(iterable),将一个可迭代对象中的数据按顺序添加到队列的头部。pop(),将队列尾部的数据弹出,并作为返回值。

2025-07-11 14:18:43 214

原创 leetcode 230. 二叉搜索树中第 K 小的元素

二叉搜索树的特点是当前节点大于所有左子树的节点,当前节点小鱼所有右子树的节点;由于二叉搜索树的特点,它进行中序遍历时,得到的序列就是升序的。

2025-07-10 18:19:06 127

原创 leetcode 116. 填充每个节点的下一个右侧节点指针

方法二:DFS,对于二叉树的递归问题,三层就是完整的子问题,其余都是一样的问题,最还要考虑返回值,每一层的返回值;这个算是理解进阶递归问题比较好的模版了;方法一:BFS,双端队列实现,deque不但可以使用popleft方法,它还是使用下标获取元素;铁厂面试coding。

2025-07-10 16:32:22 256 1

原创 python 排序函数

关键点时元素为nums.items(),key=lambad x:x[0]

2025-07-10 14:13:50 128

原创 leetcode 49. 字母异位词分组

哈希的方法,对每个字符串排序,排序相同的为一组,然后append到一个list里。

2025-07-10 14:02:57 457

原创 leetcode 102. 二叉树的层序遍历.

使用BFS可以实现层序遍历,其中用到了双端队列deque()

2025-07-09 22:53:20 121

原创 python 输入数组的两种方式

2.列表推导式+map把str转换成int。

2025-07-09 11:05:40 112

原创 leetcode 152. 乘积最大子数组

经典的动态规划问题,dp问题就是要找状态,因为序列里有负数,所以当前最大值可能是之前状态的最小值乘上当前值,当前的状态为dp[i]=max(pre_max*nums[i], pre_min*nums[i], nums[i])。好像是某大厂的编程题。

2025-07-09 10:49:05 106

原创 leetcode 101. 对称二叉树

递归就是拆解子问题,要把子问题的所有情况都列举出来;下面的代码是判断二叉树是否对称,子问题是,1.如果一个节点那肯定是对称的,2.当前节点有左子树或右子树,那肯定不是对称的,3.当前节点左右子树都有,且左右节点的值相等,那就是当前状态是对称的;剩下就是递归判断左的左和右的右和左的右和右的左也是对称的,直到递归完所有节点都满足条件就能判断树的对称的,否则就不是对称的。

2025-07-08 23:04:15 167

原创 leetcode 226. 翻转二叉树

很经典的问题,翻转二叉树中的左右节点,tmp存root.left,递归的进行左右节点交换,最后是返回当前的节点。

2025-07-08 22:43:31 71

原创 leetcode 1. 两数之和

【代码】leetcode 1. 两数之和。

2025-07-08 22:30:52 87

原创 leetcode 238.除自身以外数组的乘积

思路:两趟循环即可搞定,第一趟算每个位置在它之前的乘积,第二趟算每个位置在它之后的乘积。时间复杂度O(n)。

2025-07-03 14:55:07 92

原创 python websocket客户端

在本例中,WebSocketClient类被修改为包含一个标志(is_heartbeat_failed),如果心跳失败,该标志将被设置为True。send_heartbeat方法在发送一个心跳消息后检查这个标志。如果设置了该标志,则表示心跳失败,客户端将尝试重新连接。本程序具有websocket的基本功能,其中另外加了心跳,心跳失败重连。

2023-09-28 15:09:35 554 1

原创 docker compose使用

docker compose使用方法

2023-09-17 18:14:54 174 1

空空如也

空空如也

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

TA关注的人

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