- 博客(105)
- 收藏
- 关注
原创 栈-柱状图中最大的矩形
这里注意在使用ArrayDeque接口进行栈的实现时,必须使用peekLast()或者pollLast()、addLast()类似的方法,不能使用Stack类的方法,不然会报错。
2025-04-27 05:11:24
221
原创 二叉树层序遍历
先进先出,符合一层一层遍历的逻辑,而栈先进后出模拟深度优先遍历也就是递归的逻辑。层序遍历一个二叉树,就是从左到右一层一层的去遍历二叉树,学完之后你就可以一口气凎完下面十道力扣题目。二叉树的递归和迭代遍历都是。,而二叉树层序遍历是。
2025-04-26 16:11:30
219
原创 技巧-多数元素
使用hashmap,然后将数组中的数存入HashMap中,然后遍历HashMap中的键值对,如果当前键值对的值大于临时值,则更新最后返回临时键值对的值。
2025-04-24 17:48:30
196
原创 动态规划-完全平方数
使用动态规划,这个数必然落在(1,√n),则可以枚举,假设枚举到j,那么还需要取到若干数的平方,构成n-j * j,则可以跟这个写出状态转移方程。
2025-04-21 06:10:16
203
原创 动态规划-打家劫舍
开始对于题目理解错误 ,以为只是隔一家偷一次,只有两间房屋,选择其中金额较高的房屋进行偷窃。3、房间数大于2(k > 2)2、两间房,则偷中间的max。1、只有一间房,则直接偷了。只有一间房屋,则偷窃该房屋。
2025-04-17 21:06:21
132
原创 最强八股文总结-我也想offer拿到手软
面试题: Spring 框架中单例bean是线程安全的吗答:不是线程安全 Spring 框架中有一个 @Scope 注解,默认的值就是singleton,单例的。因为一般在spring的bean的中都是注入无状态的对象,没有线程安全问题,如果在bean中定义了可修改的成员变量,是要考虑线程安全问题的,可以使用多例或者加锁来解决Spring框架中bean默认单例Java Virtual Machine Java程序的运行环境(java二进制字节码的运行环境)一次编写,到处运行。
2025-04-14 23:19:29
733
原创 子串-滑动窗口的最大值
当k为1时,结果错误,移动删除掉的可能刚好是最大值,所以不能通过此方法来进行计算。注意这里细节处理,什么时候将堆顶元素poll,,还有将数组的索引位置也维护在优先队列中。:定长双指针,滑动窗口,不是很合理。2. 使用单调队列,主要在于这段。但是此时的算法执行用时有点高。:整型数组,最大值k。
2025-04-14 23:16:28
230
原创 贪心算法-跳跃游戏
遍历数组,更新可以到达的最远位置,如果一旦能到达的最远位置超过了数组的最大位置,则可以直接返回true,遍历完成之后,最后一个位置仍不可到达,则直接返回false。
2025-04-11 19:15:33
713
原创 堆-前K个高频元素
然后使用一个长度为K的最小堆,每次都将新的元素与堆顶元素进行比较(堆中频率最小的元素),如果新的元素的频率比堆顶端的元素大,则弹出堆顶端的元素,将新的元素添加进堆中,最后堆中的k个元素即为前k个高频元素。
2025-04-01 19:04:25
148
原创 栈-最小栈
使用双端队列来实现,并且使用一个minStack进行维护最小值,每次push一次,minStack维护一次最小值,pop一次,同样的minStack也pop一次,xStack和minStack中元素数量一致、
2025-03-27 21:03:43
195
原创 栈-有效的括号
我们可以看到Satck的功能基本上已经满足我们的要求了,可是在文档上依然推荐我们使用Deque双端队列的实现类来完成Satck的功能,这是因为java中Stack类设计的有一些问题,因为我们可以看到Satck是继承自 Vector,但是依照程序设计的一个原则多组合少继承来看,这个设计是不合理的,应该是Vector组成Satck比较好,然后java的官方也发现了这个问题,但是后面想更改的时候时间就比较晚了,所以才在文档里面建议我们使用双端队列来模拟栈比较好。细节在于将右括号入栈。
2025-03-27 19:50:58
332
原创 二分查找-寻找旋转排序数组中的最小值
作为while循环的条件呢?因为在第一个if判断中,right赋值为mid,当最后left,mid,right全都相等时,会陷入死循环,所以此处使用。使用搜索旋转排序数组的方法,会漏掉一种情况,如下代码。所以在进行比较时使用。
2025-03-25 17:40:42
143
原创 二分查找-在排序数组中查找元素的第一个和最后一个位置
非递减数组,可以实现一个方法,找到每一个目标值的最左边索引,然后target+1起始索引的前一位就是最右边索引。:整型数组,存储开始位置和结束索引。:整型数组,目标整型变量。
2025-03-21 22:34:38
276
原创 回溯-单词搜索
搜索下一单元格: 朝当前元素的 上、下、左、右 四个方向开启下层递归,使用 或 连接 (代表只需找到一条可行路径就直接返回,不再做后续 DFS ),并记录结果至 res。返回 false : (1) 行或列索引越界 或 (2) 当前矩阵元素与目标字符不同 或 (3) 当前矩阵元素已访问过 ( (3) 可合并至 (2) )。标记当前矩阵元素: 将 board[i][j] 修改为 空字符‘\0’ ,代表此元素已访问过,防止之后搜索时重复访问。:遍历字符数组,下上右左递归回溯。:二维字符数组,给定字符串。
2025-03-21 21:30:19
324
原创 回溯-括号生成
使用回溯法,先append左括号,然后再append右括号,当左括号数量小于n时append,然后递归加回溯,右括号也同理。此题在解的时候考虑到了回溯,但是关于在哪里递归和回溯没有搞明白,还有。
2025-03-21 18:40:32
209
原创 回溯-组合总和
表示当前在 candidates 数组的第 idx 位,还剩 target 要组合,已经组合的列表为 combine。递归的终止条件为 target≤0 或者 candidates 数组被全部用完。那么在当前的函数中,每次可以选择跳过不用第 idx 个数,即执行。,注意到每个数字可以被无限制重复选取,因此搜索的下标仍为 idx。也可以选择使用第 idx 个数,即执行。:此题目可以优化,进行剪枝操作。
2025-03-20 21:11:09
214
原创 二分查找-搜索二维矩阵
一次二分查找,将二维数组看成是一个一维数组,然后进行二分查找。二分查找的头为0,尾为数组的元素个数,中间值使用。注意在while循环中。
2025-03-17 20:09:39
235
原创 二叉树-从前序和中序中遍历序列构造二叉树
将中序遍历的结果存入哈希表中,然后通过前序遍历知道二叉树的根结点,然后递归。:二叉树的前序和中序遍历,两个整型数组。
2025-03-17 17:55:42
161
原创 实习笔试-01字符转换小写字母
然后定义一个数组来存储0、1的当前索引。,进行StringBuilder拼接,使用StringBuilder来操作。,取出当前数字字符对应的小写字母链表。:01字符串,这里使用String。然后将当前字符指向下一个小写字符。,然后得到链表中的小写字符。
2025-03-14 21:51:59
257
原创 回溯-子集
在向result中添加新的元素时,应该创建一个副本,将tmpList传入,而不是直接加入tmpList,这样后续对tmpList的修改会影响result中的值,会使结果全部一样。:利用二进制,(比如说数组长度为3)000、001、010、011、100、101、110、111刚好可以遍历所有情况。20225.03.17二刷,使用回溯。但是关于此类问题,主要考察回溯的算法。
2025-03-10 17:32:41
256
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人