自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 算法通关村——二叉树经典算法题

可是,到了叶子节点只能拿到叶子节点的数据,拿到前面节点的数据呢?一个小技巧:每一次遍历时,将当前节点的数据都存到一个String里,作为参数传给下一个递归调用。这种题,直接对两棵树进行递归,中间如果结构不相同或者值不相同就返回false,一直判断到叶子节点,到叶子节点都没问题就返回true,代码如下。先拿到根节点判断是否为空,然后取出根节点的左右子树,题目的镜像对称,换成算法表示,给定一棵二叉树根节点root,按任意顺序,返回所有根节点到叶子结点的路径。给定一棵二叉树,检查它是否镜像对称,示例如下。

2023-11-24 10:55:04 75 1

原创 算法通关村——迭代法实现二叉树前序遍历

迭代法实现二叉树前序遍历,其思想是:从根节点开始,如果有左子树就一直往下找,每遍历一次就把结点放入栈里,直到为空。

2023-11-23 11:14:17 70

原创 算法通关村——二叉树的层序遍历

层层遍历,每一层都对应着下一层的结点。我们可以用队列来辅助遍历,将根节点放到队列中,然后根节点取出,它的值放到双数组里,它的左右子树继续放到队列中。给你一个二叉树,请你返回其层序遍历从左到右的所有值(逐层的,从左到右访问所有结点)每一层的外部用一个size做判断,size==0的时候就是当前层结点遍历完成的时候。

2023-11-21 10:07:26 64

原创 算法通关村——如何通过中序和后序来恢复一棵二叉树

前序和中序也是一样的道理,前序是从左往右确定根节点, 后序是从右往左确定根节点。注意的是,如果一棵二叉树只有前序和后序,是无法构建出来的。根据后序,可以确定根节点是1,根据中序,可以确定 3,4,8,6,7,5,2在左边,10,9,11,15,13,14,12 在右边。思路:根据后序确定每一个根节点,然后根据中序确定剩下的元素在根节点左边还是右边。中序:3,4,8,6,7,5,2,1,10,9,11,15,13,14,12。后序:8,7,6,5,4,3,2,10,15,14,13,12,11,9,1。

2023-11-19 11:28:23 77

原创 算法通关村-栈实现队列,队列实现栈解析

队列实现栈,创建两个队列queue1和queue2,queue1时主要存储数据元素的队列,queue2时辅助队列。添加元素时,将元素添加到queue2,然后再将queue1所有元素添加到queue2,最后queue1和queue2相互交换。此时,最新添加的元素就在queue1的队列头部,实现栈的结构。出栈时,判断栈B是否为空,为空就将栈A的元素遍历取出,放入栈B。此时栈B顶端元素就是最先进来的元素,此时peek和pop操作就在栈B进行。判断整体队列是否为空,两个栈同时判断是否为空,代码如下。

2023-11-18 11:05:11 32 1

原创 算法通关村-队列问题解析

【代码】算法通关村-队列问题解析。

2023-11-18 09:44:51 43 1

原创 算法通关村-括号匹配问题解析

遍历字符串,遇到左括号就入栈,遇到右括号,就拿栈顶元素(左括号)去 map 里查value,比较value与当下遍历的右括号是否相等,相等则符合条件。栈的典型题目,这里采取得策略是用 map 保存符号的对应关系,key存左括号,value是右括号,一对括号形成映射关系。给定一个只包括,"(",")","[","]","{","}" 的字符串 s,判断字符串是否有效。1,左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。

2023-11-06 14:36:30 46

原创 算法通关村-基于数组实现栈

【代码】算法通关村-基于数组实现栈。

2023-11-05 23:52:19 58 1

原创 算法通关村-双指针在数组里的妙用

给你一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,并返回移除后数组的新长度。要求: 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并原地修改输入数组。给你一个有序数组 nums,请你原地删除重复出现的元素,使每个元素只出现一次,返回删除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组 并在使用 0(1)额外空间的条件下完成。这题用双指针,也是一样的做法,快指针遍历确定可以筛选的元素,慢指针接受快指针传过来的元素,然后慢指针往前走一步。

2023-11-02 23:09:24 38

原创 编程导航算法通关村第三关 | 青桐:数组的增删操作

数组的增加和删除,手写,具体参考代码。

2023-10-28 23:22:27 35 1

原创 编程导航算法通关村第二关 | 白银:链表指定区间反转

链表指定区间反转,基础还是链表的反转。

2023-10-25 19:28:13 84

原创 编程导航算法通关村第二关 | 青铜:链表的反转

链表反转时时算法里常考的,这里简单介绍两种方法。

2023-10-20 22:50:20 120 1

原创 编程导航算法通关村第一关 | 白银:链表双指针使用合集

这一期简单介绍一下双指针的使用,使用它可以简单高效解决很多问题。

2023-10-19 22:16:27 213

原创 编程导航算法通关村第一关 | 青铜:链表的增删改查

使用java操作链表,节点的定义是一个Node类,类的属性有val (存储数据) 和next (Node类,用于指向节点 )。java中的方法变量都是存在栈中的,而node节点实例是存储在堆中,每调用一个方法就会开一个新的栈空间,方法之间的相互调用参数传递都是形参指向,互不干扰。如main方法里调用 insertNode(head, node, 2) 方法,在 insertNode 方法里的head变量无论怎么改变,都不会影响main方法里的head变量。

2023-10-15 21:52:18 498 1

原创 Java接口interface

使用场景(个人理解):多个类(A,B,C)中实现形式差不多,但是细节不一样的方法,可以让它们实现同一个接口(可以包含多个方法),然后在外部用一个方法(H)接受接口参数,并在这个方法里实现接口方法。然后在其他类(DD)里实例化(a1,b1,c1)对象,并调用方法(H),这时只需要传入实例化的对象(a1,b1,c1)作为方法H的参数,就能够调用实例化对象(a1,b1,c1)里的接口方法。程序中类D调用多个实例类(a1,b1,c1)的方法时,统一通过方法(H)调用,程序就会规范,代码也整洁许多。

2023-04-13 17:02:20 176 1

原创 Java Final关键字,抽象类和抽象方法,抽象类实践-模板设计模式

再者说,用static修饰的方法可以用。

2023-04-13 14:34:10 259 1

原创 创建一个子类对象时,各种初始化的顺序

父类的静态代码块和静态属性(优先级一样,按定义顺序执行)子类的静态代码块和静态属性(优先级一样,按定义顺序执行)父类的普通代码块和普属性初始化(优先级一样,按定义顺序执行)父类的构造方法子类的普通代码块和普通属性初始化(优先级一样,按定义顺序执行)子类的构造方法父类中定义了静态代码块,静态属性,普通代码块,普通属性,还有构造器子类也一样。然后我们来实例化一个子类对象,看看它的输出会是什么。

2023-04-12 17:08:02 250 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除