- 博客(34)
- 收藏
- 关注
原创 回溯算法总结(Java)
例子:给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。每层建立hash表,进行查询。
2025-04-11 10:01:15
192
原创 分割回文串 && 复原IP地址(Java)
写博客的目的是每日督促并记录刷题,也欢迎大家批评指正~(day26)(呜呜隔了好多天了,后边要更加油!!
2025-04-07 21:38:49
239
原创 二叉搜索树的最近公共祖先 && 删除二叉搜索树中的节点 && 修剪二叉搜索树(Java)
重要结论:第一次遇到cur节点是数值在[q, p]区间中,那么cur就是q和p的最近公共祖先(闭区间是因为公共祖先可以是本身)(如果知道这个结论:本题就类似于给定二叉搜索树(BST)的根节点 root 和一个整数值 val—第700题)
2025-03-24 22:00:24
336
原创 验证二叉搜索树 && 二叉搜索树中的众数 && 二叉树的最近公共祖先(Java)
二叉搜索树特点:左子树的值<中间节点<右子树的值。(注意没有=):由于二叉搜索树的特点,决定了它的中序遍历一定是递增。所以可以将其中序遍历的值放在list中,检验list中的值是否全部递增,该方法的实现见代码1。:可以在递归过程中记录前一个节点的值,不断跟前节点进行比较,不满足直接退。见代码2.
2025-03-20 22:06:48
343
原创 从中序与后序遍历序列构造二叉树(Java)
从后序数组中找到最后一个元素的值,即为当前节点并进行节点的创建,并在中序数组中找到该值所在索引(使用Map)。接着开始递归,后序数组倒着向前(所以递归应该先从右子树开始),当右子树遍历完(即不存在遍历区间时left>right)return。
2025-03-18 20:39:36
289
原创 二叉树的路径总结(Java)
从头开始遍历,并在遍历过程中将节点数值保存,当遍历到根节点(即:左右孩子都为空时)完成一条路径,根据题目做相应处理后开始回到上一步,并开始不断进行遍历回溯。下面就以三道题举例。
2025-03-18 16:26:47
630
原创 二叉树的层序遍历&&二叉树的右视图&&填充每个节点的下一个右侧节点指针及II(Java)
思路:分层—从上到下、从左到右,用队列。每一层放入一个list,所有的list放入结果集,所以要有两个循环。外层循环:队列不为空内层循环:循环该层的节点个数,直接用size获取(注意:如果任何操作有关分层次,都需要两个循环)
2025-03-12 21:44:42
219
原创 二叉树的深度遍历(Java)
主要思想:利用栈,先放中间节点,取出并记录结果集。接着放右节点和左节点,并不断将栈口元素作为新的root。主要思路:先看左侧(一直看到null),再看右侧。后序遍历参考前序遍历。
2025-03-11 18:59:34
150
原创 滑动窗口的最大值 && 前K个高频元素(Java)
整体思路:使用优先级队列将最大值放在首位,这样直接加入结果集。但是也需要找到出队列的值—。因此优先级队列中要维护数组,数组内分别放值和索引。
2025-03-10 15:27:44
229
原创 有效的括号 && 删除字符串中的所有相邻重复项 && 逆波兰表达式求值(Java)
知识点:对称匹配(要求相应位置匹配且没有多余)—使用栈解决思路:只要是左符号都可以加;如果栈为空的时候加右符号直接返回false;如果栈不为空且加入的为右符号就开始进行消消乐。当整个字符串循环完了且栈为空,说明消消乐成功。
2025-03-07 20:51:07
113
原创 用栈实现队列 && 队列实现栈(Java)
思路:最新来的一定要在出栈口(一个个叠加),用que2作为存放新来的队列。解释:每次push新元素时,都将其放入一个空队列,然后将另一个队列的所有元素转移到这个队列中,最后交换两个队列的引用。基本思路:使用两个栈(输入栈和输出栈共同完成一个队列),保证把进栈数据全部导入到输出栈(注意是全部导入)。写博客的目的是每日督促并记录刷题,也欢迎大家批评指正~(day12)注意:在push方法里就要随时进行这种变化。注意:将相近功能的代码抽象出来。
2025-03-06 22:26:12
344
原创 双指针法总结(Java)
指针的作用:两个指针在一个for循环下完成两个for循环的工作写博客的目的是每日督促并记录刷题,也欢迎大家批评指正~(day11)
2025-03-05 18:34:11
134
原创 反转字符串II && 替换数字(Java)
思路:不用库函数,对数组进行确定性扩容。使用双指针(双指针的新应用),从数组尾巴往前依次填充。写博客的目的是每日督促并记录刷题,也欢迎大家批评指正~(day9)
2025-02-27 18:25:30
200
原创 三数之和&&四数之和(Java)
大体思路:分组将两数之和放在哈希表中并不方便,因为都是在一个集合里,查询时并不好去重。所以选择在数组里进行操作,三数之和=0,可以采用将数组进行排序,依次取出三个数—i作为索引进行循环,left指针在i后一个,right指针在最后边。当如果 nums[i] + nums[left] + nums[right] < 0 说明 此时 三数之和小了,left 就向右移动,反之right向右移动。
2025-02-27 15:13:14
246
原创 两数之和&&四数相加II&&赎金信(Java)
大体思路:依次循环数组取出num,然后去找数组中是否存在target-num(查找一个数最快的方式就是用哈希表)
2025-02-27 09:16:56
295
原创 有效的字母异位词&&字母异位词分组&&找到字符串中所有字母异位词(Java)
总结:有关字母的哈希表可以使用数组,因为小写字母‘a’ = 97,26个小写英文字母都可以都过与‘a’变成数组里的索引,从而创建一个容量为26的数组。
2025-02-24 20:37:11
120
原创 两两交换链表中的节点&&删除链表中的倒数第n个节点(Java)
大体思路:由于链表只能正向搜索,故需要两个指针,一个在前面探路看是否到达末尾,另一个指针用来删除。写博客的目的是每日督促并记录刷题,也欢迎大家批评指正~(day5)
2025-02-21 21:20:39
178
原创 【导数的意义及梯度的含义】
今天在学习神经网络时看到梯度,突然回想不起来导数的意义以及为什么要进行求导了,跟我有一样困惑的小伙伴们可以参考这篇文章哦!
2024-07-27 16:00:22
1760
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人