- 博客(908)
- 收藏
- 关注
原创 leetcode:路径总和 III
判断到达该节点后有没有等于target的,遍历数组,逐次相减判断。就是前缀和,每到一个节点,计算该节点到开始那个节点的和。这题我刚开始写,没有完全通过,通过了109/116个。比如上述图,到了左边第一个3节点,此时前缀和数组。你的思路都是对的,运行时间也是打败绝大多数。差不多是这样的,10,15,18。因为你在代码里加了个break。思路啥的基本正确,细节出问题。你知道你为啥做不出来吗?让他弄完,别中途退出来了。就把那个break去了。
2024-09-19 16:06:18 148
原创 leetcode:统计二叉树中的好节点的数目
和答案思维一样的,但没考虑到把上一个最大值当作参数。但考虑到节点的左最大值和右最大值不能共通。我的思路就是用一个遍历记录沿途最大值。所以我用了一个变量记录了上一个最大值。
2024-09-08 11:30:08 153
原创 leetcide:祖父节点值为偶数的节点和
就是遍历过程中遇到偶数值节点时,然后累加他的孙子节点即可,就这么简单。不过有个问题,偶数值节点还不一定有子节点,更别说有孙子节点了。
2024-09-07 23:12:24 158
原创 leetcode:路径总和 IV
所以定义一个15长数组,通过计算得到每一个节点值,将这些值根据哈希表放到数组对应位置。比如215这个数,求得21,查哈希表21-索引1位置处,所以把5这个数放到索引1处。然后根据这个数组构造二叉树。因为题目说了,深度小于5。然后遍历这颗二叉树即可。
2024-09-06 16:32:48 201
原创 leetcode:二叉树的垂序遍历
一个是可以通过类来存每个节点信息,一个是排序技巧。这个题是先把所有节点的坐标求出来存起来。最后挨个存,思路确实简单。思维上很像,都是标记法。这个题和垂直遍历很像。
2024-09-05 22:07:02 218
原创 leetcode:最接近的二叉搜索树值
看一下主函数有没有参数要传给子函数的,有的话,可能就需要2个参数。你如果遇到traverse到底是一个参数还是2个参数。traverse建议还是void类型好。
2024-09-03 17:40:19 119
原创 leetcode:二叉树最长连续序列
那好,题目还要判断长度,那是不是也要考虑传一下呢?你如果你只传一个root.left你觉得可以不?不行,因为你不知道父节点和该子节点连续的。不知道子函数参数有什么?
2024-09-02 14:10:25 251
原创 leetcode:二叉树的右视图
这题用BFS比较好想,就是取每一层末尾或开头的值。你想的是给子函数传入root.right。都已经加够了,自然不会再加的。两种方法都是右边先开始遍历的。DFS的话,你不要想复杂了。而且还解决了你想的覆盖问题。这样就不会遍历左边的了。可以新建一个高度变量。
2024-09-01 14:38:32 243
原创 leetcode:求根节点到叶节点数字之和
以这个为例,到124,计算完之后,要返回到12,你懂吧,减去4除以10。遍历的时候就依次加,然后判断即可。就是下面代码递归的下面的一行。
2024-09-01 13:56:36 121
原创 leetcode:二叉树的所有路径
返回条件就是root为null,或者root左右节点为null。建议使用java自带api string.join。他是将不同字符串中间用你指定的符号连接起来。其他情况就符合了,添加起来。就是返回字符串里面有->和之前有一道题很类似。
2024-09-01 11:51:32 212
原创 leetcode:从前序与中序遍历序列构造二叉树
然后再中序遍历中找1,找到了,数一下1的左边多少个数字,有5个。2,5,4,6,7表示左边的,3,8,9表示右边的。那再前序遍历向后数5位,就把前序遍历分成2部分了。前序遍历第一个就是根节点,是1。这个题建议联想最大二叉树那道题。是在那道题模板上改的。
2024-08-27 13:35:03 193
原创 leetcode:二叉树展开为链表
即,要在原来TreeNode上改。然后把2原来右边拼接到新的右边上。我这里是另外的,所以运行不通过。这题关键是函数返回是void。原来节点不变基础上改。
2024-08-21 14:09:23 138
原创 leetcode:黑名单中的随机数
那1难道映射到4位置处?不行,所以要判断你映射处的位置是不是黑名单数。还有一个问题,如果本身黑名单数就在末尾,那自然不用映射。这样随机到了1,那么他的映射是4,则随机数是4。随机到了2,那不在黑名单不用查表,直接就是2。比如0,1,2,3,4,黑名单是1,3。比如还是上面5个数,黑名单是1,3,4。自然,3和4不用映射,本来就在数组末尾。建一个哈希表,只需要把1映射到4处。就是把黑名单数放到数组末尾。
2024-08-20 14:14:30 222
原创 leetcode:O(1)时间插入、删除和获取随机元素
这题需要哈希表配合数组一起来。牵扯到随机性那就得数组了。删除的话,交换到末尾删除。比如下图,你要删除元素7。先获取7元素的索引,为3。然后将末尾元素索引改为3。
2024-08-20 13:55:54 184
原创 leetcode:拼车
建议纸上画一下,最后求得的数组只要有元素超过capi,一律return false。如果某一站上去一万人,下一站右下去一万人,那正负为0,不也可以?意思就是好多个车站点,每个站点可能都要上下人。但车的容量是有限的,请判断中间是否会超载。这个题你如果想的比较仔细,可能会觉得不对。把所有站点看成一个数组。
2024-08-13 14:23:18 178
原创 leetcode:区间加法
里面有2个方法,一个是给区间内所有值加减,一个是由差分数组递推回原来数组返回。差分数组适用于频繁的对数组某个区间值进行加减。这个题先构造差分数组类。
2024-08-13 13:54:10 145
原创 leetcode:区域和检索 - 数组不可变
sumRange的参数是[0, 2], [2, 5], [0, 5]输入的是[-2, 0, 3, -5, 2, -1]数组。这个题不能把上述中间代码写到sumRange。虽然时间复杂度不高,但你写进去了。时间复杂度就是指数型的了。
2024-08-12 15:15:12 126
原创 leetcode:易混淆数
最后二者相加,比较是否和原来相等即可。我的思路是双指针,一个开头一个结尾。有的话,根据后面求出前半部分对称数。哈希表存的数都有自己的对称数。根据前面求出后半部分对称数。没有的话直接false。
2024-08-09 14:47:07 170
原创 leetcode:最短单词距离 II
再加上shortest操作次数,次数×每次遍历时间,可能就超了。然后后面的求最短距离,每次调用时,由于用了哈希表,速度快很多。所以我的方法没错,但是时间有点长,每次都要遍历一遍数组。哈希表键是字符串,值是列表,存的是键单词对应的索引。找到单词后,直接双指针遍历列表里的计算最短距离即可。这样的话只用第一次,就把所有单词都加到了哈希表里。什么是shortest操作次数不大于5000。用哈希表的话,次数×时间,不会超时。和之前最短单词距离代码一样的。很遗憾12个例子通过了11个。不是很理解何为设计?
2024-08-08 14:17:25 122
原创 leetcode:最短单词距离 III
虽然是2个for循环,但第一个for循环找到第一次word1位置。相同情况,我也是只遍历了一遍数组。下一个for循环接着上次继续。
2024-08-08 13:39:01 115
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人