JavaSE
java基础学习
肥大毛
落魄谷中寒风吹,春秋蝉鸣少年归。
展开
-
LeetCode刷题---路径总和
是一种用于遍历或搜索树或图的算法。在搜索开始时,首先将根节点放入队列中。然后,在每一步中,算法都会检查队列中的第一个节点,并访问其所有尚未访问过的邻居节点。这些邻居节点随后被添加到队列的末尾。然后,算法从队列中删除当前节点,并继续处理队列中的下一个节点。原创 2024-03-12 16:19:25 · 342 阅读 · 0 评论 -
LeetCode刷题---二叉树展开为链表
如果存在左节点,创建辅助节点指向左节点,判断左节点是否有右节点,如果有右节点,则将辅助节点指向右节点,此时进行拼接操作,即将辅助节点的右节点指向当前节点的右节点,当前节点cur的右节点指向当前节点的左节点,且当前节点的左节点指向为Null。判断当前节点是否有左节点,如果不存在左节点,则当前节点向右移一位。结束上述步骤之后,当前节点向右移一位,之后开始重新执行上述步骤。当根节点不为空时,从二叉树根节点开始遍历。原创 2024-03-07 18:58:19 · 344 阅读 · 0 评论 -
LeetCode刷题---填充每个节点的下一个右侧节点指针 II
如果cur.left不为空时,pre的next节点为cur.left,之后pre指针前进,同理,当cur.right不为空的时候,pre的next指针为cur.right,之后pre前进,最后当前节点cur前进。如果cur前进后为空,则表示需要开始遍历下一层,cur指向dummy的next节点,如果cur仍为空,则循环结束,返回根节点,如果cur不为空,则表示cur已经指向了下一层的第一个节点处,开始该层的遍历。创建辅助指针pre,pre初始指向dummy,之后通过pre来填充当前层的next节点。原创 2024-03-07 00:57:44 · 532 阅读 · 1 评论 -
LeetCode刷题---填充每个节点的下一个右侧节点指针
如图所示,值为2的节点的左子节点的next节点为其右子节点,此时判断2的节点的next节点是否为NULL,如果不为NULL,值为2的节点的next节点为值为3的节点,且值为2的节点的右子节点的next节点为值为3的节点的左子节点。如果值为2的节点的next节点为NULL,则从其下一层的最左边的节点开始重新遍历。因为根节点的next节点为NULL,开始从根节点的下一层的最左边的节点开始遍历。从根节点开始,根节点的左子节点的next节点就指向根节点的右子节点。可以根据每一层来依次遍历。原创 2024-03-06 22:43:13 · 397 阅读 · 0 评论 -
LeetCode刷题---从中序与后序遍历序列构造二叉树
传入参数中,左子树在中序遍历中的起始索引为中序遍历中第一个数的索引,终止索引为根节点midRoot-1,左子树在后序遍历中的起始索引为后序遍历中第一个数的索引,终止索引为起始索引+左子树的节点个数(通过中序遍历中根节点的索引-1-中序遍历中左子树的起始索引得出)。传入参数中,右子树在中序遍历中的起始索引为midRoot+1,终止索引为midRight,在后序遍历中的起始索引为左子树在后序遍历中的终止索引+1,终止索引为lastRoot-1。后序遍历中最后一个数为二叉树的根节点。原创 2024-02-26 22:58:46 · 467 阅读 · 0 评论 -
LeetCode刷题---从前序与中序遍历序列构造二叉树
递归创建右子树,传入参数为先序和中序遍历数组,右子树的起始节点索引=根节点在中序遍历数组中的索引+1和右子树的终止节点索引(首次传入右子树的终止节点索引为数组长度n-1)创建递归方法buildTreeNew(先序遍历数组,中序遍历数组,左子树的起始节点,左子树终止节点索引,右子树的起始节点,右子树终止节点索引)其中左子树的终止索引可以根据 根节点在先序遍历数组中的索引(首次传入为0)+左子树节点的个数=左子树终止节点的索引。首先根据先序遍历找出二叉树的根节点,先序遍历的起始索引为根节点的索引。原创 2024-02-26 21:02:03 · 646 阅读 · 0 评论 -
LeetCode刷题---对称二叉树
4.分别递归遍历左子树的左子树和右子树的右子树是否对称,左子树的右子树和右子树的左子树是否对称,如果都对称,则返回true。3.如果左节点的值和右节点的值不相等时,返回false。2.如果左节点和右节点只有一个为空时,返回false。首先对二叉树进行判空,如果根节点为空,则返回true。1.如果左节点和右节点同时为空,则返回true。接下来对当前节点的左节点和右节点进行判断。原创 2024-02-22 16:13:46 · 309 阅读 · 0 评论 -
LeetCode刷题---反转二叉树
创建临时节点,将右节点赋值给临时节点,将左节点赋值给右节点,再将临时节点赋值给左节点。对二叉树进行反转,如果根节点为空,则返回。原创 2024-02-22 15:02:36 · 351 阅读 · 0 评论 -
LeetCode刷题---相同的树
找出递归结束条件,如果两个树满足条件一个树或者其子树为空,而另一个树或者其子树不为空,两个树或者其子树的值不等,则返回false。使用递归的方法对两个树进行判断,如果两个的树的根或者其左子树和右子树的值都相等,则返回true。首先对两个树进行空值判断,如果两个树都为空,则返回true。原创 2024-02-21 10:59:55 · 392 阅读 · 0 评论 -
LeetCode刷题---LRU缓存
如果哈希表中已经存储该节点,则需要对该节点的数据进行更新,首先根据key从哈希表中取出该节点,再对节点中的value重新赋值,之后根据LRU算法将该节点从链表中删除,再添加到链表表头的位置。在写put方法的时候,如果哈希表中未存储该节点,则创建一个新的节点,节点中key和value分别为要添加的键和值,之后将key和新创建的节点添加到哈希表中,在将新的节点添加到链表头部。在写get方法来获取某节点的时候,如果哈希表中存储了该节点,根据LRU算法,则先将该节点删除,再将该节点添加到链表中。原创 2024-02-21 09:40:45 · 1511 阅读 · 0 评论 -
LeetCode刷题---二叉树的最大深度
如果有子节点,则先将当前节点的左节点作为参数传入方法中,之后在将当前节点的右节点作为参数传入方法中。使用先序遍历的方法来找出二叉树的最大深度,即先访问根节点,在访问左节点,之后是右节点。对于任意一个节点,其深度为其左子树深度和右子树深度的最大值加1。二叉树的最大深度是从根节点到最远叶子节点的最长路径上的节点数。首先判断当前节点是否还有子节点,如果没有则结束递归,返回0。最大高度是从根节点到最远叶子节点的最长路径的长度。最后对取出的左右节点深度的最大值+1返回即可。使用递归的方法来解决该题。原创 2024-01-27 10:19:00 · 380 阅读 · 0 评论 -
LeetCode刷题---分隔链表
此时将right指向节点的下一个节点指向空,right指向节点即为合并后链表的尾节点,left的下一个节点指向r初始节点的下一个节点。如果当前节点的val值大于等于x,right指向节点的下一个节点为当前节点cur,right前进一个节点。如果当前节点的val值小于x,left指向节点的下一个节点为当前节点cur,left前进一个节点。创建链表r用来表示大于等于给定值x的链表,创建辅助链表right指向r的初始节点。创建链表l用来表示小于给定值x的链表,创建辅助链表left指向l的初始节点。原创 2024-01-25 22:43:06 · 392 阅读 · 0 评论 -
LeetCode刷题---旋转链表
首先创建辅助节点cur遍历指向链表最后一个节点,并将cur的下一个节点指向head头节点,形成闭环,并且在遍历的过程中计算链表的长度n。n-k表示当前节点(当前节点指向未反转节点的最后一个节点)到反转后的链表的最后一个节点的位置。当cur前进了n-k个节点后,即cur已经走到了反转后链表的最后一个节点。再创建一个新的节点指向反转后链表的头节点,再将cur的下一个节点指向空。为了防止k>n的情况,需要对n-k的结果对n求余。原创 2024-01-25 21:45:29 · 479 阅读 · 0 评论 -
JavaSE学习(二)
1.java程序在进行赋值或运算的时候,会将精度小的类型自动转换为精度大的数据类型再进行计算2.精度大的类型赋值给精度小的类型会报错,反之则会进行自动类型转换这样写是错的,因为1.1是double类型,a+1.1为double类型,不能转为float类型3.(byte,short),char之间不会相互自动转换4. byte short char 三者可以计算,(不管单独还是混合)在计算的时候自动转为int类型这样写都是错的,因为a+b为int类型,高精度不能转换为低精度。原创 2023-01-03 10:01:48 · 320 阅读 · 0 评论 -
JavaSE学习(一)
一次编译,到处运行。原创 2022-12-31 22:10:34 · 190 阅读 · 0 评论