12 2023 档案

摘要:难度:【简单】 定义:在一个二叉树中,任意两个节点之间的路径中最长的路径的长度称为其直径。路径长度由两个节点之间经过的“边”表示,而不是节点数。且二叉树的直径不一定经过根节点。 先大致看了官方解法,不理解,心情暴躁没看懂,就自己瞎写。 起初不理解直径不一定经过根节点。根据示例,只简单将root的左右 阅读全文
posted @ 2023-12-31 18:06 metasequoiaa 阅读(7) 评论(0) 推荐(0) 编辑
摘要:难度:【简单】 “汉明距离”是指两个整数的二进制表示中二进制位不同的对数(或组数)。汉明距离应用广泛,可以用于检测编码错误、量化字符串差异(信息论)等。 根据定义,求两个整数的汉明距离,就是求两个整数二进制位不同的组数。根据异或运算,相同为假相异为真,两数异或之后统计二进制位为1的总数就可以了。代码 阅读全文
posted @ 2023-12-30 16:00 metasequoiaa 阅读(20) 评论(0) 推荐(0) 编辑
摘要:难度:【简单】 补记20231223 自己的方法做一遍:循环除以2,余数为1则计数加1。官方解法比我的效率更高一些。 进阶版时间复杂度为O(n)的算法没实现。 阅读全文
posted @ 2023-12-29 16:37 metasequoiaa 阅读(5) 评论(0) 推荐(0) 编辑
摘要:难度:【简单】 常规笨方法做一遍:先遍历一遍记录到哈希表中,再从1到n遍历一遍,不在哈希表中的记入返回数组中,时空复杂度都是O(n)。 尝试优化空间复杂度到O(1):先填满返回数组,再遍历原数组,原数组中出现的元素删掉。也是朴素的笨方法,所以超出了时间限制。这让我体会到了数组查找元素的时间代价。 抄 阅读全文
posted @ 2023-12-29 16:28 metasequoiaa 阅读(6) 评论(0) 推荐(0) 编辑
摘要:难度:【简单】 第一个想法是用栈,提交代码3次都显示解答错误。原因:第一次是没考虑一个节点的情况;第二次是不应该通过栈剩余元素个数判断单节点情况;第三次是没有考虑奇数个节点的情况。 看官方题解,重新思考。用数组最容易解,时空复杂度都是O(n)。刚开始用栈是以为能优化到进阶的O(1)空间复杂度,其实是 阅读全文
posted @ 2023-12-22 12:52 metasequoiaa 阅读(2) 评论(0) 推荐(0) 编辑
摘要:难度:【简单】 1. 按自己的思路写一遍,运行报错,看了半天是返回的头节点写错了,应该返回前一个节点而不是最后一个节点(初始链表的最后一个节点是null),改了后就通过了。 2. 官方还提供了递归解法,一开始没太理解,多看一会就懂了。解法如下截图。我觉得“假设n(1)​→…→n(k−1)已反转完成” 阅读全文
posted @ 2023-12-19 17:31 metasequoiaa 阅读(7) 评论(0) 推荐(0) 编辑
摘要:难度:【简单】 1. 根据自己的思路写一遍,不是最优解没关系,写出来再说。将一个链表遍历并储存到HashSet中,再遍历另一个链表,同时查询当前节点是否已经访问过(HashSet中是否存在)。提交后显示“通过”。 2. 一开始想过双指针,但是想不出来怎么移动。参考官方题解后才明白了“a+c+b=b+ 阅读全文
posted @ 2023-12-18 17:44 metasequoiaa 阅读(6) 评论(0) 推荐(0) 编辑
摘要:难度:【简单】 第一遍:用最朴素的算法写,一个HashSet保存访问过的节点,但是仅保存了节点的value,出现值相等的节点算法就会失效。提交后当然是“解答错误”。 第二遍:修改HashSet数据类型,重新提交后显示“通过”。 第三遍:优化空间复杂度到O(1)。没有思路就参考了官方题解,使用了快慢指 阅读全文
posted @ 2023-12-16 17:11 metasequoiaa 阅读(8) 评论(0) 推荐(0) 编辑
摘要:难度:【简单】 1. 第一反应是对每个元素出现的次数计数,然后找到计数为1的元素。但是题目要求额外使用空间为常量,该方法不符合要求。 2. 既然空间复杂度是常数级别,那就尝试用一个变量解决,用一个变量对每个元素计数,当遇到重复的元素时变量置零,但是还是要保存访问过的元素,不符合条件。那么如何能够让该 阅读全文
posted @ 2023-12-14 14:50 metasequoiaa 阅读(5) 评论(0) 推荐(0) 编辑
摘要:该题难度为【简单】 1. 大致思考了一下,就开始写递归代码,提交一遍就过了。经过前面的练习,遥远的递归记忆慢慢恢复,写出来了,但不是那么真切。 2. 看了一遍官方题解,原来刚才写的是深度优先遍历。 3. 另一种解法是广度优先遍历,看一下题解唤醒大脑储存的知识,把代码实现一遍。不写不知道,写着写着就卡 阅读全文
posted @ 2023-12-13 10:56 metasequoiaa 阅读(3) 评论(0) 推荐(0) 编辑
摘要:该题难度为【简单】 1. 尝试自己写,哪怕写个暴力解法也行,没写出来,看官方题解。 2. 扫了一眼,不太理解,又想了一会“我代码里漏掉的一半在官方思路中是怎么补上的”,再从头看一遍文字解析,“原来是两棵树对比”。这样思路就清晰了,用递归遍历每个节点,比较每次遍历的“根节点”即可。 3. 写好了代码, 阅读全文
posted @ 2023-12-12 15:29 metasequoiaa 阅读(5) 评论(0) 推荐(0) 编辑
摘要:该题难度为【简单】 第一遍:暴力解法,写了一个递归,时间复杂度特别高,提交后显示“超时”。 第二遍:看了一遍官方的题解后,使用了一个临时变量保存每一步的计算结果,先查询是否已经计算过,如果查不到结果再计算。提交后显示“通过”。 第三遍:看官方解法的时候,我是先看代码的,完全看不懂为什么用数组循环,看 阅读全文
posted @ 2023-12-11 15:10 metasequoiaa 阅读(15) 评论(0) 推荐(0) 编辑