- 博客(7)
- 收藏
- 关注
原创 LeetCode题解 --将有序数组转化为二叉平衡树(108)
我们已知这个数组是有序的,那我们只需要每次对数组在中间进行拆分,我们可以得到中间的那个元素,这个元素左边的值都比他小,右边的元素的值都比他大,而且比他大的元素和比他小的元素数量差不超过1,故我们可以将这个元素设置为根节点的值,之后我们可以递归的来设置该节点的左孩子和右孩子。左子树和右子树又同样都是二叉树。由此我们可知平衡二叉搜索树也就是一颗满足根节点两边子树高度差不超过1,并且任何节点的左孩子的值小于本身的值,右节点的值大于本身的值的二叉树。简单来说,二叉树,顾名思义,即任何节点的子节点不大于2的树。
2024-08-09 17:24:13
291
3
原创 LeetCode题解 --二叉树的直径(543)
题目描述如上,思路:我们可以想到,不论我们找到一条什么样的路径,我们都可以找到这条路径上最高的那个点(离根节点最近的一个点),此时,这个点左边的最长路径即为以这个点为根节点的子树的左子树的最大深度,右边的最长路径长度即为右子树的最大深度。以题目中给的样例为例,答案中的两条路径所包含的最高点是1,也就是根节点,最长路径长度即为根节点左边的最长路径加上根节点右边的最长路径。而这个最长路径也就是分别对应了左子树和右子树的深度,左子树的深度为2,右子树的深度为1,故最终的答案为2+1=3。
2024-08-08 17:58:45
321
1
原创 LeetCode题解 --两数相加(2)
我们知道,在一个链表为空时直接返回另外一个链表,紧接着我们按部就班遍历链表,当有一个链表的下一项为空时,我们需要跳出循环,此时只考虑进位和较长链表的节点中的值的和,而且当进位为0时我们不再做任何操作。所以我们以进位(upSite==1)作为循环条件,如果这个过程中并没有达到链表的末尾,我们计算其值和进位的和,并执行之前的取模取商的操作,直到不再进位或者链表走到末尾,如果链表走到末尾进位依然为1,我们需要创建一个新的节点并接在之前的末尾之后。下面先给代码,再结合代码讲解如何具体实现。
2024-08-05 17:05:25
164
原创 LeetCode题解 --环形链表II(142)
此时,由于快指针的速度是慢指针的两倍,所以快指针走了2A+2x的长度,由于此时快指针已经追上了慢指针,所以快指针一定比慢指针多走了整圈数,假设快指针比慢指针多走了n圈,则有2A+2x=A+x+nB=>A+x=nB,故此时慢指针再走A步一定可以到达入环点,由于入环前的长度也是A,则可以让快指针回到头部,然后快慢指针均一次走一步,当其再次相遇时便是入环点。
2024-07-29 15:22:49
150
原创 LeetCode题解 --环形链表(141)
快慢指针,双指针方法中典型的一种,快指针可以一次走两步,慢指针一次走一步,如果有环的话,快指针定会追上慢指针,如果快指针走到了末尾,说明没有环。指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数。来表示链表尾连接到链表中的位置(索引从 0 开始)。如果链表中有某个节点,可以通过连续跟踪。仅仅是为了标识链表的实际情况。,判断链表中是否有环。给你一个链表的头节点。
2024-07-29 14:51:07
178
原创 LeetCode必做100题 --41,缺失的最大正数
本题利用了原地哈希思想,原地哈希,即使用数组本身作为哈希表而不是开辟新的空间。首先对数组进行遍历,如果遇到一个正数并且其大小小于数组的大小,我们需要去比较nums[i]与i+1是否相同,如果不相同的话,我们需要交换nums[i]与nums[nums[i]-1],此处需要注意仍然需要比较换过来的新的nums[i]是否满足要求,如果不满足则需要继续换位。在执行过一遍换位操作后,执行第二次遍历,如果发现不在正确位置的元素,则返回i+1,如果都在位置上,返回size+1。
2024-07-19 16:09:55
227
1
原创 关于git连接443端口时git clone报超时错误的解决方法
但是github的网页版是可以访问的,这个是因为git并没有使用到你所开的代理(梯子),这个时候你需要去查看自己代理的端口号,本人是7890。在查到端口号之后我们执行如下命令可以更改我们的代理,注意将里面的7890改成自己的端口号。在更改代理完成后,就可以正常完成git clone操作了!
2024-03-10 22:07:27
2140
4
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人