自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 探索二叉树的奇幻世界:解密二叉树的结构与遍历

本章习题中很多都是采用递归的方法,求树中节点的个数一样,通过遍历二叉树的每个节点,计算叶子节点的数量。3、分别用根节点的左子树和右子树分别判断是否与子树相同(注意:不用isSameTree的原因是isSameTree只会判断一次,就结束了)2、遍历改树的每一个节点,求每个节点的的左子树和右子树高度的差是不是大于2,是则返回false。,计算左子树和右子树的叶子节点数量。最终,函数返回叶子节点的数量,表示二叉树中叶子节点的数量。遍历二叉树的每个节点 ,使其左右节点进行互换,然后递归左右节点,返回根节点。

2024-10-07 10:03:25 751

原创 括号匹配——(栈实现)

1、我们先初始化一个栈,对已有的字符串进行逐个遍历;2、进行判断是否为左括号,若为左括号,则存入栈中;若为右括号:此时先判断栈是否为空:3、最后,for 循环遍历完,检查栈是否还有元素(左括号多),若不为空,返回 false;最后返回true;表示全部匹配;

2024-10-07 09:50:15 175

原创 数据结构——List接口

在集合框架中,List是一个接口,通过其源码,我们可以清楚看到其继承了Collection。Collection 也是一个接口,该接口中规范了后序容器中常用的一些方法,具体如下所示:Iterable也是一个接口,表示实现该接口的类是可以逐个元素进行遍历的,具体如下:List提供了很多方法,如下:(太多,仅截取部分)虽然方法比较多,但是常用方法如下:本篇内容较少,主要介绍了List接口,及其使用,下篇我们将介绍顺序表,及简单实现其部分方法。

2024-10-05 12:17:48 329

原创 双向无头非循环链表的简单实现及介绍

欢迎大家阅读小奥奇的新作,听说上一篇我们留下了一点点 “ 简单的题目 ” ,我们在本篇要干什么呢,请看本篇任务!1、解决 “ 简单的遗留题目 ”2、LInkedList(双向)的使用3、简单的自我模拟LinkedList的实现4、ArrayList和LinkedList的区别

2024-10-05 12:16:37 614

原创 栈和队列相互实现(Java)

若为空,则将Stack1中的所有元素逐个弹出并压入Stack2,然后弹出Stack2的栈顶元素。出栈操作时,将非空队列中的元素逐个取出并加入空队列,直到取出待出栈元素,然后将非空队列和空队列的角色互换,以便下一次操作。另一个栈用于出队操作,当需要出队时,将入队栈中的元素依次弹出并推入出队栈中,然后从出队栈中弹出元素即可实现队列的先进先出特性。使用一个栈来模拟队列时,所有元素都会被推入栈中,这意味着后入栈的元素会先出栈,与队列的先进先出特性不符。队列中的最后一个元素出队,即为栈Q顶元素。

2024-10-04 12:23:58 888

原创 构建自己的二叉树:探索创造力和思考的极限

文章目录一、树型结构1.1 树的概念1.2 概念1.3树的应用二、二叉树2.1概念2.2特殊的二叉树2.3 二叉树的性质2.4 二叉树的存储2.5 二叉树的遍历三、实现前中后序遍历3.1 NLR:前序遍历3.2 LNR:中序遍历3.3 LRN:后序遍历。

2024-10-04 10:22:09 1323

原创 LinkedList与链表

系列文章目录一、ArrayList的缺陷二、链表1.链表的概念及结构2.链表的实现总结。

2024-10-03 10:10:16 1287

原创 盛最多水的容器

◦ 如果改变右边界,无论右边界移动到哪里,新的水面的高度⼀定不会超过左边界,也就是不会超过现在的水面高度,但是由于容器的宽度减小,因此容器的容积⼀定会变小的。◦ 由于左边界较小,决定了水的高度。如果改变左边界,新的水面高度不确定,但是一定不会超过右边的柱子高度,因此容器的容积可能会增大。枚举出能构成的所有容器,找出其中容积最大的值。,分别指向水槽板的最左端以及最右端,此时容器的宽度为。◦ 容器的宽度一定变小。

2024-10-03 09:29:50 297

原创 快乐数——双指针算法

根据上述的题目分析,我们可以知道,当重复执行 x 的时候,数据会陷入到⼀个”循环“之中。而”快慢指针“有⼀个特性,就是在⼀个圆圈中,快指针总是会追上慢指针的,也就是说他们总会相遇在⼀个位置上。如果相遇位置的值是 1 ,那么这个数⼀定是快乐数;如果相遇位置不是 1 的话,那么就不是快乐数。如下图:快乐数演变后范围已知,我们就要引入双指针算法中的快慢指针,也许大家看到上图,就可能想到我们学习链表时,我们便运用循环,当两指针不相等时,按上图进行移动,直至循环结束

2024-10-02 09:47:04 336

原创 ArrayList与顺序表

如下代码,我们上传一个整形data用于放在数组的最后,size表示数组中含有元素的个数,也是我们要放入元素的下标,最后使数组个数加一即可。如果这样写我们就错啦!我们学习数据结构需要明白:(1) 数据结构虽然抽象一些,但也得有大概的结构(2)逻辑需要非常严谨(也就是看似很简单,但写出来代码可能一大堆)所以,上述代码并不严谨,如果我们传入一个满元素的数组呢,那么新增的元素不就没内存了嘛,也就是无处安放,也就是开会喊了你,但你过去才发现,会议桌周围以及坐满了人,此时我们应该坐哪里?

2024-10-02 09:46:12 717

原创 时间和空间复杂度

我们在面对一个新的题型或复习之前的题时,往往脑洞大开,偶然间发现了新的解题方法,怎么判断不同方法的好坏呢,换句话说:该如何衡量一个算法的好坏呢?一、算法效率算法效率分析分为两种:第一种是时间效率,第二种是空间效率。时间效率被称为时间复杂度,而空间效率被称作空间复杂度。时间复杂度主要衡量的是一个算法的运行速度,而空间复杂度主要衡量一个算法所需要的额外空间。

2024-10-01 09:16:14 680

原创 复写零——双指针算法

(1)定义两个指针如下图,判断cur的值处是否为 0?为0dest后移两步dest后移一步(2)判断dest是否指向数组最后一个元素位置 ,如果是,则停止,不是cur后移一步(3) 最后cur指向即最后复写元素。

2024-10-01 09:14:39 325

原创 移动零——双指针算法

「数组分两块」是⾮常常⻅的⼀种题型,主要就是根据⼀种划分⽅式,将数组的内容分成左右两部分。这种类型的题,⼀般就是使⽤「双指针」来解决。

2024-09-30 18:35:19 994

原创 Java中异常的认识和创建

Java 中虽然已经内置了丰富的异常类, 但是并不能完全表示实际开发中所遇到的一些异常,此时就需要维护符合我 们实际情况的异常结构.Java中已经存在丰富的异常类,但我们在实际开发中难免会遇到一些异常不能用已有的异常来正确表示,那么我们就可以根据实际情况自定义一个异常类。但要注意:自定义异常通常会继承自 Exception 或者 RuntimeException继承自 Exception 的异常默认是受查异常继承自 RuntimeException 的异常默认是非受查异常。

2024-09-30 18:34:22 1084

原创 JavaSE——继承

在Java中我们能够使用类对现实中的实体进行描述,类经过实例化之后的产物对象,则可以用来表示现实中的实体,但是现实世界错综复杂,不同事物之间可能会存在一些关联,那么在设计程序时就需要考虑这个问题。

2024-07-14 13:21:38 1066 2

原创 JavaSE——【封装】

基本规则在文件的最上方加上一个package语句指定该代码在哪个包中包名需要尽量指定成唯一的名字, 通常会用公司的域名的颠倒形式(例如 com.bit.demo1 )包名要和代码路径相匹配. 例如创建的包, 那么会存在一个对应的路径来存储代码.如果一个类没有package语句, 则该类被放到一个默认包中.操作步骤1. 在 IDEA 中先新建一个包: 右键 src -> 新建 -> 包2. 在弹出的对话框中输入包名

2024-06-08 21:51:06 805 28

原创 JavaSE——【类和对象】

面相对象程序设计关注的是对象,而对象是现实生活中的实体,比如:洗衣机。但是洗衣机计算机并不认识,需要开发人员告诉给计算机什么是洗衣机上图左侧就是对洗衣机简单的描述,该过程称为对洗衣机对象(实体)进行抽象(对一个复杂事物的重新认知),但是 这些简化的抽象结果计算机也不能识别,开发人员可以采用某种面相对象的编程语言来进行描述,比如:Java语 言。在java中定义类时需要用到class关键字,具体语法如// 创建类field;// 字段(属性) 或者 成员变量method;// 行为 或者 成员方法。

2024-06-08 08:33:44 1141 5

原创 JavaSE——【数组的定义与使用】(二)

内存是一段连续的存储空间,主要用来存储程序运行时数据的。比如:1. 程序运行时代码需要加载到内存2. 程序运行产生的中间数据要存放在内存3. 程序中的常量也要保存4. 有些数据可能需要长时间存储,而有些数据当方法运行结束后就要被销毁如果对内存中存储的数据不加区分的随意存储,那对内存管理起来将会非常麻烦。程序计数器 (PC Register): 只是一个很小的空间,保存下一条执行的指令的地址虚拟机栈(JVM Stack): 与方法调用相关的一些信息,每个方法在执行时,都会先创建一个栈帧。

2024-06-07 17:28:41 871

原创 JavaSE——【数组的定义与使用】(一)

悠悠在整理旧物时,发现了一本布满灰尘的古文,当她轻轻翻开,一个个奇异的古文竟飞了出来,在空中组成了神秘的一段话:“数组的定义和使用开篇了!!!数组:可以看成是相同类型元素的一个集合。在内存中是一段连续的空间。

2024-06-07 14:32:25 936

原创 JavaSE——【方法的使用】(二)

在无尽的宇宙深处,一艘造型奇特的飞船如流星般划过黑暗。飞船内部,各种高科技设备闪烁着冷峻的光芒。一位年轻的宇航员正专注地操作着控制面板,面板上突然弹出JavaSE—方法的使用的续篇更新了!通过对方法和递归的学习,小奥奇也是推荐大家实现汉诺塔问题的解决,敬请期待下一篇!

2024-06-06 13:50:38 847 1

原创 JavaSE——【方法的使用】(一)

有一个神秘的国度,那里的人们都长着翅膀,能自由自在地在天空翱翔。一天,少年威尔无意间闯入了这个国度,看着周围飞翔的人们,他的心中突然想起今天更新的博客还没看,今天今天到底更新了什么内容呢?方法就是一个代码片段. 类似于 C 语言中的 "函数"。

2024-06-06 08:28:26 747 1

原创 JavaSE——【逻辑控制】(习题)

上篇例题

2024-06-05 13:37:38 270 2

原创 JavaSE——【逻辑控制】(知识)

公元 3050 年,地球的科技已经发展到令人难以想象的地步。这天,艾米莉在自己的房间里启动了最新的虚拟旅行装置,下一秒,她发现小奥奇的博客更新了。立即放弃了虚拟旅行的想法,沉溺在刚更新的博客知识里。噢!原来是新章节逻辑控制开篇了,究竟有多大的魅力呢?我们来看看。本篇介绍了逻辑控制的各种语句结构,下一篇我们将其运用在实际问题上面,敬请期待

2024-06-05 07:46:16 924 2

原创 JavaSE——【运算符】(二)

本篇小奥奇将带领大家学习进制的转换,原码反码补码及各种操作符的运算

2024-06-04 15:13:58 1173 6

原创 JavaSE——【运算符】(一)

今天进入Java中运算符的学习,通过本篇的学习,希望大家能够熟练掌握各种运算符的使用,开始步入正题!一、什么是运算符?本篇我们详细介绍了几种简单操作符,续篇会为大家带来位运算符,移位运算,各种运算符的优先性以及原码,反码,补码等方面的知识,敬请期待

2024-06-04 15:13:12 685

原创 JavaSE——【数据类型及变量】

本章小奥奇将带领大家学习JavaSE中的数据类型及变量,希望大家能够完成一下的学习目标:1. 字面常量.2. 数据类型.3. 变量.

2024-06-03 11:15:59 892 6

原创 JavaSE——【初始Java】

通过前面C语言的简单学习后,我们正式开始步入Java的征程,下面小奥奇将带领大家简单认识一下Java编程语言,以及提前了解其部分知识。Java不仅是一种优秀的程序设计语言,具有令人赏心悦目的语法和易于理解的语义;Java还是一个有一系列计算机软件和规范形成的技术体系,这个技术体系提供了完整的用于软件开发和跨平台部署的支持环境,并广泛应用于嵌入式系统、移动终端、企业服务器、大型机等各种场合。从此篇开始,我们正式步入Java的学习中,当然,小奥奇尽量不偷懒,保持更新,最后,你知道奥奇小课堂的答案吗?文章目录。

2024-06-03 09:06:11 517 6

原创 分支和循环(一)if 语句和(关系,条件,逻辑)操作符

本篇奥奇将给大家介绍 if 语句以及关系操作符,条件操作符,逻辑操作符和算术操作符,哦?不对!算术操作符可讲解过了,哈哈,大家忘了可要去前面复习哦~

2024-02-22 22:27:37 937 3

原创 C语言数据类型和变量(三)变量,printf和scanf详解

printf()的作用是将参数文本输出到屏幕。它名字里面的f代表format(格式化),表示可以定制输出文本的格式。return 0;上面命令会在屏幕上输出一行文字“printf()不会在行尾自动添加换行符,运行结束后,光标就停留在输出结束的地方,不会自动换行。为了让光标移到下一行的开头,可以在输出文本的结尾,添加一个换行符\n。return 0;return 0;printf()是在标准库的头文件stdio.h定义的。使用这个函数之前,必须在源码文件头部引入这个头文件。

2024-02-22 17:14:50 1541 1

原创 C语言数据类型和变量(二)操作符详解

前言上一章中小奥奇详细讲解了C语言中各数据类型的介绍,长度和范围,按照计划本章将讲解变量,算术操作符和赋值操作符,但是为了让内容更规范化,本章将变量放在第三小节讲解,本章就专讲算术操作符,赋值操作符和单目操作符。

2024-02-21 09:35:03 812 1

原创 C语言数据类型和变量(一)数据类型介绍,范围和变量

C语言提供了丰富的数据类型来描述生活中的各种数据。使用整型类型来描述整数,使用字符类型来描述字符,使用浮点型类型来描述小数。所谓“类型”,就是相似的数据所拥有的共同特征,编译器只有知道了数据的类型,才知道怎么操作数据。下面盘点一下C语言提供的各种数据类型,本章节主要探讨内置数据类型。

2024-02-20 15:09:30 922 1

原创 C语言语句分类及注释

在本章中,小奥奇将带来C语言常见概念的最后一章,带领大家了解C语言中不同语句,以及注释的两种不同形式。

2024-02-19 11:00:00 1012 1

原创 C语言字符串,\0和转义字符

在本章中,小奥奇将给大家带来字符串的相关知识并带领大家探索\0的奥秘,最后详细介绍一下部分重要的转义字符

2024-02-18 13:00:00 2094

原创 C语言库函数,关键字及字符

库函数,关键字,字符及ASCII编码

2024-02-13 16:00:00 2137

空空如也

空空如也

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

TA关注的人

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