自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 堆-前K个高频元素

然后使用一个长度为K的最小堆,每次都将新的元素与堆顶元素进行比较(堆中频率最小的元素),如果新的元素的频率比堆顶端的元素大,则弹出堆顶端的元素,将新的元素添加进堆中,最后堆中的k个元素即为前k个高频元素。

2025-04-01 19:04:25 102

原创 栈-每日温度

栈-每日温度。

2025-03-31 20:45:09 121

原创 栈-字符串解码

遍历,遇到数字就对后面括号内的字符重复操作。:字符串,带有正整数和括号。:只含有字母的字符串。

2025-03-29 16:54:30 182

原创 堆-数组中的第K个最大元素

整型数组,整型变量。

2025-03-28 23:55:40 132

原创 栈-最小栈

使用双端队列来实现,并且使用一个minStack进行维护最小值,每次push一次,minStack维护一次最小值,pop一次,同样的minStack也pop一次,xStack和minStack中元素数量一致、

2025-03-27 21:03:43 176

原创 栈-有效的括号

我们可以看到Satck的功能基本上已经满足我们的要求了,可是在文档上依然推荐我们使用Deque双端队列的实现类来完成Satck的功能,这是因为java中Stack类设计的有一些问题,因为我们可以看到Satck是继承自 Vector,但是依照程序设计的一个原则多组合少继承来看,这个设计是不合理的,应该是Vector组成Satck比较好,然后java的官方也发现了这个问题,但是后面想更改的时候时间就比较晚了,所以才在文档里面建议我们使用双端队列来模拟栈比较好。细节在于将右括号入栈。

2025-03-27 19:50:58 319

原创 二分查找-寻找两个正序数组的中位数

浮点数double。

2025-03-27 19:00:36 171

原创 回溯-N皇后

【代码】回溯-N皇后。

2025-03-25 18:59:52 315

原创 二分查找-寻找旋转排序数组中的最小值

作为while循环的条件呢?因为在第一个if判断中,right赋值为mid,当最后left,mid,right全都相等时,会陷入死循环,所以此处使用。使用搜索旋转排序数组的方法,会漏掉一种情况,如下代码。所以在进行比较时使用。

2025-03-25 17:40:42 130

原创 二分查找-寻找旋转排序数组中的最小值

二分查找,判断哪一边有序。

2025-03-24 18:14:18 148

原创 回溯-分割回文串

【代码】回溯-分割回文串。

2025-03-24 17:14:51 298

原创 二分查找-在排序数组中查找元素的第一个和最后一个位置

非递减数组,可以实现一个方法,找到每一个目标值的最左边索引,然后target+1起始索引的前一位就是最右边索引。:整型数组,存储开始位置和结束索引。:整型数组,目标整型变量。

2025-03-21 22:34:38 266

原创 回溯-单词搜索

搜索下一单元格: 朝当前元素的 上、下、左、右 四个方向开启下层递归,使用 或 连接 (代表只需找到一条可行路径就直接返回,不再做后续 DFS ),并记录结果至 res。返回 false : (1) 行或列索引越界 或 (2) 当前矩阵元素与目标字符不同 或 (3) 当前矩阵元素已访问过 ( (3) 可合并至 (2) )。标记当前矩阵元素: 将 board[i][j] 修改为 空字符‘\0’ ,代表此元素已访问过,防止之后搜索时重复访问。:遍历字符数组,下上右左递归回溯。:二维字符数组,给定字符串。

2025-03-21 21:30:19 309

原创 回溯-括号生成

使用回溯法,先append左括号,然后再append右括号,当左括号数量小于n时append,然后递归加回溯,右括号也同理。此题在解的时候考虑到了回溯,但是关于在哪里递归和回溯没有搞明白,还有。

2025-03-21 18:40:32 201

原创 技巧-只出现一次的数字

【代码】技巧-只出现一次的数字。

2025-03-20 21:32:22 176

原创 回溯-组合总和

表示当前在 candidates 数组的第 idx 位,还剩 target 要组合,已经组合的列表为 combine。递归的终止条件为 target≤0 或者 candidates 数组被全部用完。那么在当前的函数中,每次可以选择跳过不用第 idx 个数,即执行。,注意到每个数字可以被无限制重复选取,因此搜索的下标仍为 idx。也可以选择使用第 idx 个数,即执行。:此题目可以优化,进行剪枝操作。

2025-03-20 21:11:09 206

原创 二叉树-二叉树的最近公共祖先

二叉树头结点,两个结点pq。

2025-03-20 20:27:13 142

原创 回溯-电话号码的字母组合

【代码】回溯-电话号码的字母组合。

2025-03-18 19:10:01 121

原创 二叉树-路径总和III

使用前缀和,然后哈希表维护二叉树。:二叉树根结点,目标数。

2025-03-18 17:49:29 206

原创 二分查找-搜索二维矩阵

一次二分查找,将二维数组看成是一个一维数组,然后进行二分查找。二分查找的头为0,尾为数组的元素个数,中间值使用。注意在while循环中。

2025-03-17 20:09:39 226

原创 二叉树-从前序和中序中遍历序列构造二叉树

将中序遍历的结果存入哈希表中,然后通过前序遍历知道二叉树的根结点,然后递归。:二叉树的前序和中序遍历,两个整型数组。

2025-03-17 17:55:42 151

原创 实习笔试-数字重排列

使用BigInteger的gcd方法,返回最后生成的对象是否和原数字互质。

2025-03-16 16:01:10 216

原创 实习笔试-01字符转换小写字母

然后定义一个数组来存储0、1的当前索引。,进行StringBuilder拼接,使用StringBuilder来操作。,取出当前数字字符对应的小写字母链表。:01字符串,这里使用String。然后将当前字符指向下一个小写字符。,然后得到链表中的小写字符。

2025-03-14 21:51:59 247

原创 回溯-子集

在向result中添加新的元素时,应该创建一个副本,将tmpList传入,而不是直接加入tmpList,这样后续对tmpList的修改会影响result中的值,会使结果全部一样。:利用二进制,(比如说数组长度为3)000、001、010、011、100、101、110、111刚好可以遍历所有情况。20225.03.17二刷,使用回溯。但是关于此类问题,主要考察回溯的算法。

2025-03-10 17:32:41 248

原创 二叉树-将二叉树展开为链表

前序遍历之后再赋值,左边置为空,右边为单链表中的结点。

2025-03-10 16:35:01 172

原创 Java常用数据结构公式化速查

对于一些常用数据类型的方法进行总结。

2025-03-10 02:31:22 838

原创 回溯-全排列

【代码】回溯-全排列。

2025-03-09 18:09:59 104

原创 二叉树-二叉树的右视图

使用层序遍历,建立二元列表,每一层列表的最后一个元素即为最右边的结点。然后本题也就是使用层序遍历,并返回每一层最后一个结点。

2025-03-09 17:10:07 368

原创 图论-实现Trie(前缀树)

每一个节点会有多个子节点,通往不同子节点的路径上有着不同的字符。子节点代表的字符串是由节点本身的原始字符串,以及通往该子节点路径上所有的字符组成的。示例:插入"apple"时,会依次创建a→p→p→l→e的路径,并在e节点设置isEnd=true。示例:搜索"apple"时,若路径存在且e节点的isEnd=true,返回true。对每个字符计算索引(如ch - ‘a’),若对应子节点不存在则创建新节点。遍历结束后,将最后一个节点的isEnd设为true,标记单词结束。若中途遇到子节点不存在,返回null。

2025-03-08 18:28:50 434

原创 二叉树-二叉搜索树中第K小的元素

加入此行代码的原因是当遍历到第k个元素时,可以停止遍历,不用再加入其他的结点。:使用中序遍历,遍历到的第k个数就是第k小的元素。

2025-03-08 17:04:12 210

原创 图论-课程表

看题解之后知道此题属于【拓扑排序】问题,判断安排图是否是有向无环图,使用入度表,借助一个队列queue,将所有的入度为0的节点入队,然后当queue非空时,依次出队,将此结点对应的所有邻接结点的入度-1,当邻接结点的入度为0,则入队,出队时进行–操作,判断课程数是否等于零,判断是否成功。:课程数和先修课程数组。

2025-03-06 20:19:20 407

原创 二叉树-验证二叉搜索树

注意此题目每次在递归的时候,使用的都是一个结点在进行比较,而不是直接比较他的左右儿子,所有在比较头结点时,需要定义长整型Long的最大最小值,但是这个题目的Integer的范围不给过。

2025-03-06 17:53:35 165

原创 二叉树-将有序数组转换为二叉搜索树

取数组的中间值为二叉树的头结点,使用递归完成创建二叉树结点的操作。

2025-03-05 19:22:07 155

原创 二叉树-二叉树的直径

使用递归,找到二叉树左右子树的最多结点数,左右相加就可以找到直径。

2025-03-05 18:43:53 133

原创 链表-随机链表的复制

构建一个哈希表用来存放原结点和新结点。:带有随机结点的链表。

2025-03-04 18:42:46 110

原创 链表-K个一组翻转链表

参考翻转链表,然后使用链表的长度除以要每次翻转的结点数,控制while循环次数,然后在for循环中翻转链表,关键在于怎么求链表的长度,再遍历一遍链表求值?特殊情况,当翻转部分长度不足 k 时,在定位 end 完成后,end==null,已经到达末尾,说明题目已完成,直接返回即可。初始需要两个变量 pre 和 end,pre 代表待翻转链表的前驱,end 代表待翻转链表的末尾。翻转链表,然后将三部分链表连接起来,然后重置 pre 和 end 指针,然后进入下一次循环。:链表,和每次要反转的结点数。

2025-03-04 18:02:57 162

原创 图论-腐烂的橘子

【代码】图论-腐烂的橘子。

2025-03-03 05:22:50 306

原创 图论-岛屿数量

只要有一个“1”,则找到与他相邻的所有的“1”,将其都置为“0”,有点像递归的思路,然后直到遇到一个不为“1”,则岛屿数加一。

2025-03-03 04:20:03 219

原创 链表-删除链表的倒数第N个结点

使用快慢双指针,先将快指针移动n,然后一块移动快慢指针,直到快指针为空,则此时找到需要删除的结点,然后操作。

2025-02-27 03:16:27 159

原创 链表-合并两个有序链表

注意:这里定义了一个哑节点,result1,哑节点的 next 指针始终指向合并后链表的头节点。这样做可以避免处理头节点为空的特殊情况,简化代码逻辑。:迭代,判断两个节点的值的大小,谁小先连谁,然后移动谁,最后把剩下的移动到整合一半的节点后面。:合并后链表的头节点。

2025-02-27 02:29:55 152

空空如也

空空如也

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

TA关注的人

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