自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 递归 算法

首先,解决一个递归问题的思路就是找出重复的子问题,据此可以设计出函数头;然后,只关心某一个子问题在做什么->函数体的设计;这道题在前面也同样做过,现在用递归来实现,下面用两个不同的视角来看待,本质上,两者都是一样的,只是第二种视角是第一种视角的展开。这道题在链表那一节已经写过了,现在如果用递归去实现,该怎么写呢?先当前节点后面的节点逆置,再把当前节点连接到逆置后的链表后面。换个角度,当我们求解x。因此,想要逆置这个链表,可以采用后续遍历的思想。时,我们可以先求出x。时,我们可以先求出x。

2024-12-04 08:57:17 986

原创 动态规划(一)

只有在i = 2时,会用到dp[0],即dp[2] += dp[0],当满足tt <= 26 && tt >= 10时,即两个字符组合起来可以解码,这时dp[2]应该需要加1,所以dp[0]应该等于1。举个例子:假如s = “2103”,创建一个虚拟节点dp[0],当i = 2,字符串访问到下标为1的字符位置,即’1’的位置,这时计算以它为结尾的解码总数,‘1’不等于’0’,dp[2] += dp[1],而dp[1]等于1;写这段代码时,初始化步骤较为冗长,那有没有什么办法可以优化一下呢?

2024-12-02 09:58:57 1055

原创 优化支出查询程序:前缀和与高效输出的实现分析

为了让PC更方便地了解自己地支出情况,请帮他编写一个小程序。给出了PC近n个月中每个月地总支出,PC会用你地程序查询q次,每次查询的内容从x个月开始到第y个月他的总支出为多少。因此,代码2和代码3在处理性能上优于代码1,尤其是代码3的输出方式是最优的,能够有效避免超时问题。为了优化上述代码以支持查询从第 x 月到第 y 月的总支出,并且处理 q 次查询,我们可以使用。对比下面的代码,只有输出时的操作不一样,然而只有代码2和3可以通过,代码1不能通过。现在q的取值范围增大了。请优化该代码,处理q更大的情况。

2024-11-13 15:18:29 425 1

原创 优先级队列(PriorityQueue)

第一个是无参的构造方法第二个构造方法是创建一个初始容量为形参的优先级队列,注意:传过去的形参不能小于1,否则会抛出IllegalArgumentException异常。一般在创建优先级队列对象时,如果知道元素个数,建议直接将底层容量给好,如果后续需要扩容时,需要开辟更大的空间,拷贝元素,这样效率会比较低第三个构造方法是传比较器,设置该优先级队列底层是建大根堆还是小根堆,默认是建小根堆;另外,建堆的元素是一个个对象时,需要传比较器第四个构造方法是既设置了优先级队列的初始容量,又传了比较器。

2024-11-02 15:38:37 352

原创 堆排序和Top-K问题

本文主要探讨了堆排序与Top-K问题的基本原理与实现,堆排序通过构建大根堆或小根堆来实现升序或降序排序,而Top-K问题则利用小根堆和大根堆高效找到数据集中前K个最大或最小元素。利用这两种方法,可以在大数据量下有效进行排序和元素查找,同时分析了相关的时间复杂度。

2024-10-30 23:45:27 836

原创 用“堆”模拟实现“优先级队列”

本文介绍了优先级队列的基本概念及其在计算机科学中的应用,阐述了如何利用堆这种数据结构来实现优先级队列,并详细说明了堆的创建、插入、删除以及调整过程。通过提供代码示例,读者能够更好地理解优先级队列的实现细节。

2024-10-24 00:25:39 715

原创 二叉树LeetCode刷题

本文介绍了一系列关于二叉树的算法问题,包括判断两颗树是否相同、子树判断、翻转二叉树、平衡树判断、以及如何将二叉搜索树转换为双向链表等。每个问题都提供了解题思路和相关Java代码示例,强调了如何分别利用递归和非递归的方法遍历树及构建树。

2024-10-13 23:54:25 857

原创 二叉树的遍历 and 基本操作实现

本文详细介绍了二叉树的四种遍历方式(前序遍历、中序遍历、后序遍历和层序遍历)及其实现代码,同时还阐述了二叉树的基本操作,包括获取节点个数、叶子节点个数、第k层节点个数、获取二叉树高度以及检测值为value的元素是否存在等。这些基本操作对于理解和操作二叉树非常重要。

2024-10-11 23:08:28 573

原创 MySQL——数据库的操作,数据类型,表的操作

本文详细介绍了MySQL数据库的基本操作,包括显示、创建、使用和删除数据库的语法及注意事项。同时探讨了常见的数据类型,如数值型、字符型和日期型,最后提供了表的创建、查看和删除的基本知识,结合综合实例阐明数据库表的设计与操作。

2024-08-08 17:08:18 1280 1

原创 二叉搜索树,Map,Set,LeetCode刷题

二叉搜索树是一种特殊类型的有序树,具有左右子树元素分布的特点,操作包括插入、查找和删除,同时其效率受到树结构的影响。在Java中可以通过一定的代码实现这些操作。此外,文中还介绍了基于红黑树的集合类TreeMap和TreeSet,以及Map接口的相关常用方法,如添加、删除和获取键值对等基础操作,这为理解数据结构提供了良好的基础。

2024-08-01 15:57:50 1052

原创 队列(Queue),循环队列,双端队列(Deque)and LeetCode刷题

本文介绍了队列(Queue)、循环队列、双端队列(Deque)以及在LeetCode刷题中的应用。重点包括队列的概念、队列的使用方法、队列的模拟实现(链式结构和顺序结构)、循环队列的实现原理、双端队列的特点以及LeetCode刷题中用队列实现栈和用栈实现队列的方法。

2024-07-15 22:39:26 1087

原创 栈(Stack)and leetcode刷题

如果是加减乘除符号,取出一个栈顶元素作为该符号的右操作数,再取出一个栈顶元素做为左操作数,计算得到的结果放入栈中,如此下去,最后栈中只会剩一个元素,这就是最终的结果。当需要取出栈中的元素中,需要依次取出最上面的元素,不能直接取出下面的元素。所以,该栈取出元素的顺序只能为:56,45,34,23,12。假如例子中a,b,c,d,e,f,g分别取1,2,3,4,5,6,7。计算机的工作原理也是这样的,将你输入的中缀表达式转化为后缀表达式,再按照后缀表达式的运算规则进行运算,得到结果!栈的删除操作叫做出栈。

2024-07-13 23:04:16 793

原创 无头双向非循环链表实现

无头双向非循环链表大致与无头单向非循环差不多,只不过每个节点多了个prev引用,可以从后一个节点找到前一个节点。并且除了头节点head,双链表还多了个尾节点tail要模拟实现无头双向非循环链表,同样需要创建三个文件:IList.java接口,MyLinkedList.java文件,test.java测试文件,下面仅展示IList.java接口和MyLinkedList.java文件。

2024-07-12 15:28:02 501

原创 无头单向非循环链表实现 and leetcode刷题

介绍单链表的模拟实现和leetcode刷题笔记

2024-07-11 21:10:32 826

原创 Cloneable接口和对象的克隆——浅拷贝和深拷贝

由浅至深,层层剖析,Cloneable接口和对象的克隆——浅拷贝和深拷贝

2024-06-18 17:32:48 1013

原创 Java对象的比较——equals方法,Comparable接口,Comparator接口

从0开始了解Java中对象比较的三种方式!

2024-06-01 11:01:34 1258

原创 封装,static,代码块,对象的打印

main方法里的花括号里的就是一个普通代码块,有没有发现 “好像a被定义了两次” ,实际上并不是这样的,第一个a相对于第二个a来说就是局部变量,当出了花括号后,变量a就会被销毁,然后再去定义a,也就不会报错了,这可在一定程度上避免因重复定义同一个变量而报错的情况。那么如何去创建一个包呢?我们也可以把static去掉,这样也可以,如果这样,这就是非静态方法了,如果需要去访问这个方法时,就必须先要实例化这个对象,然后只能通过对象的引用去调用这个方法了!,而不是堆区,这也是为什么类变量属于类,而不属于对象。

2024-05-28 16:57:30 923

原创 Java之类和对象

类是什么?类是用来对一个复杂事物(对象)进行描述的,这一概念有点类似于C语言中的自定义类型:结构体,但是Java中的类能够实现更多的功能。举个例子:一个学生类,其中包括属性:学生姓名,学生年龄,学生学号等等,行为:吃饭,睡觉,打篮球等等那么如何使用Java语言来实现一个类呢?field;//字段(属性)或者成员方法method;//成员方法class为定义类的关键字,如果要定义一个类,就必须要用到class关键字;className为所定义类的类名类名采用的是大驼峰。

2024-05-26 16:16:32 734 1

原创 动态内存管理

C语言进阶——详解动态内存管理

2024-04-14 22:21:28 1701 1

原创 自定义类型:结构体

详解自定义类型:结构体

2024-04-01 19:45:59 913

原创 【C语言】atoi函数功能及模拟实现

详解C语言atoi函数原型和功能及其模拟实现

2024-03-23 23:15:40 508 1

原创 数据在内存中的存储

详解整数和浮点数在内存中存储

2024-03-23 16:11:58 1913 1

原创 C语言内存函数

详解C语言内存函数

2024-03-19 21:07:06 673 1

原创 C语言之字符函数和字符串函数

详解C语言之字符函数和字符串函数

2024-03-17 11:46:48 898 1

原创 深入理解指针(一)

初始C语言指针

2024-03-09 22:35:32 803 1

原创 C语言之详解位操作符和移位操作符

详细解释二进制、八进制、十六进制与十进制之间的联系,原码、反码、补码,位操作符,移位操作符,以及在实际中的使用案例

2024-03-02 23:58:47 978 2

原创 C语言小项目——扫雷游戏

使用函数和数组来实现扫雷游戏

2024-02-07 21:41:27 611

原创 C语言之函数递归

详解C语言之函数递归

2024-01-30 00:11:02 1023 1

原创 详解C语言之分支与循环语句

C语言分支与循环详解

2024-01-21 15:49:57 1740 2

空空如也

空空如也

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

TA关注的人

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