
算法
文章平均质量分 59
算法折磨中...
我是三叔
世界上并没有完美的程序,但我们并不因此而沮丧,因为写程序本来就是一个不断追求完美的过程
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
从前序与中序遍历序列构造二叉树怎么写
笔者在一文中有介绍如何通过中序遍历和后续遍历构造二叉树,难度还是挺高的,重点在于找到中间节点,并且左右分界要弄清楚,这篇文章我写出了前序遍历和中序遍历如何构造二叉树的Java编程代码,具体步骤我都在代码中用注解表示出来,一句话,一行代码,这样就不会写错。原创 2023-06-24 22:59:21 · 219 阅读 · 0 评论 -
从中序与后序遍历序列构造二叉树怎么写
大家好,我是三叔,很高兴这期又和大家见面了,一个奋斗在互联网的打工人。这是力扣上面的中等难度题目,笔者感觉而言,还是相当有难度的,重点在于找到不同遍历顺序的左右开闭的点。那么代码应该怎么写呢?使用递归遍历来写:此时应该注意确定切割的标准,是左闭右开,还有左开右闭,还是左闭右闭,这个就是不变量,要在递归中保持这个不变量。原创 2023-06-24 16:12:10 · 380 阅读 · 0 评论 -
如何利用满二叉树的特性计算完全二叉树的节点个数!
遍历树来统计节点是一种时间复杂度为 O(n) 的简单解决方案。你可以设计一个更快的算法吗?原创 2023-06-18 21:16:27 · 176 阅读 · 0 评论 -
二叉树的迭代怎么写
递归遍历和迭代遍历都是遍历二叉树的方法,但它们的实现方式有所不同。递归遍历使用函数的递归调用来处理节点,而迭代遍历使用循环和栈(或队列)来处理节点。递归遍历相对简单,易于理解和编写,但可能存在函数调用的开销和堆栈溢出的风险。迭代遍历需要手动模拟递归过程,可能会更复杂一些,但可以避免函数调用的开销和堆栈溢出的风险。原创 2023-06-14 22:23:43 · 107 阅读 · 0 评论 -
教你用队列实现栈
在Java编程中,我们常常需要使用栈这种数据结构来解决问题。但是,有时候我们可能希望使用队列来实现栈的功能。本篇博客将笔者介绍如何使用一个队列来模拟栈的基本操作,包括入栈、出栈、获取栈顶元素以及判断栈是否为空。原创 2023-06-12 22:10:33 · 620 阅读 · 0 评论 -
教你用栈实现队列怎么写
在这个构造方法中,我们创建了两个Stack类型的对象:stackIn和stackOut。通过调用new Stack()来实例化这两个栈对象。stackIn = new Stack()的作用是将新创建的Stack对象分配给stackIn变量,以便在整个类的范围内都可以使用该变量引用栈对象。这样,在创建MyQueue类的对象时,构造方法将会被调用,并且stackIn和stackOut栈对象将被初始化为空栈。原创 2023-06-11 22:27:06 · 333 阅读 · 0 评论 -
二叉树的递归如何写
递归遍历的底层原理涉及到函数调用 **栈** 的概念。当一个函数在递归调用自身时,每一次递归调用都会创建一个新的函数调用帧并将其压入函数调用栈中。当递归调用结束时,对应的函数调用帧会从栈中弹出,恢复到上一次的函数调用点,然后继续执行后续的代码。原创 2023-06-11 11:15:23 · 629 阅读 · 0 评论 -
一文读懂二叉树
二叉树是一种由节点(Node)组成的数据结构,每个节点最多有两个子节点。它具有良好的层次结构,便于搜索和遍历。二叉树的定义和操作方法可以通过面向对象的方式来理解,每个节点都是一个对象,节点之间通过引用关系连接。如图所示:这棵二叉树为满二叉树,也可以说深度为k,有2^k-1个节点的二叉树。根节点为 k = 1 的深度开始计算,如图所示的二叉树,它的深度为 4 ,所以这棵满二叉树有15个节点。原创 2023-06-08 22:53:06 · 702 阅读 · 0 评论 -
哈希表你真的了解吗 如何处理哈希碰撞
哈希表是一种常见的数据结构,也被称为散列表(Hash Table)或哈希映射(Hash Map)。它通过使用哈希函数(Hash Function)将键(Key)映射到存储桶(Bucket)中,以实现高效的数据存储和检索。hash表常见的数据结构有:数组、Set、Map。数组:哈希表中关键码就是数组的索引下标,然后通过下标直接访问数组中的元素。数组是一种最基本的数据结构,它可以连续地存储多个相同类型的元素。数组的访问速度非常快,因为可以通过索引直接访问元素。原创 2023-05-30 23:20:50 · 503 阅读 · 0 评论 -
链表:虚拟头节点你会用吗?
什么是链表,链表是一种通过指针串联在一起的线性结构,每一个节点由两部分组成,一个是数据域一个是指针域(存放指向下一个节点的指针),最后一个节点的指针域指向null(空指针的意思)。链表的入口节点称为链表的头结点也就是head。如上图,是一个单链表,单链表的指针只能指向下一个data域。链表的节点在内存中是分散存储的,通过指针连在一起;链表的最后一个节点的引用为空,表示链表的结束,也就是我们所说的空指针。原创 2023-05-30 22:53:05 · 2932 阅读 · 0 评论 -
教你手写一个链表
以单链表为例,涉及到:1. 获取链表第index个节点的数值2. 在链表的最前面插入一个节点3. 在链表的最后面插入一个节点4. 在链表第index个节点前面插入一个节点5. 删除链表的第index个节点原创 2023-05-28 16:07:49 · 214 阅读 · 0 评论 -
一文读懂:什么是数组
Java是一种面向对象的编程语言,提供了许多数据结构来处理和组织数据。其中,数组是一种常见且强大的数据结构,**是存放在连续内存空间上的相同类型数据的集合**。原创 2023-05-23 23:13:28 · 577 阅读 · 0 评论 -
二分查找怎么写? 你真的弄懂二分查找了吗
二分查找是一种高效的查找算法,适用于已排序的数组或列表。它通过不断缩小查找范围的方式,在时间复杂度为 O(log n) 的情况下,定位目标元素target的位置。在实际应用中,需要注意数组的有序性、边界的更新和循环终止条件。原创 2023-05-21 20:53:03 · 613 阅读 · 0 评论 -
求数组两数之和
利用了hash表的查找,相比两层for循环,时间复杂度为O(i),以空间换取时间。map是一种k-v的存储结构,可以用key保存数值,用value在保存数值所在的索引下标值。原创 2023-05-09 22:14:16 · 186 阅读 · 0 评论