自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 二分查找一>寻找旋转排序数组中的最小值

【代码】二分查找一>寻找旋转排序数组中的最小值。

2024-10-07 19:27:22 182

原创 动态规划基础一>面试题 08.01. 三步问题

【代码】动态规划基础一>面试题 08.01. 三步问题。

2024-10-07 00:11:19 199

原创 二分查找一>寻找峰值

【代码】二分查找一>寻找峰值。

2024-10-06 13:52:59 149

原创 二分查找一>山脉数组的峰顶索引

【代码】二分查找一>山脉数组的峰顶索引。

2024-10-05 23:14:55 181

原创 初识动态规划一>第 N 个泰波那契数

【代码】初始动态规划一>第 N 个泰波那契数。

2024-10-05 12:05:03 286

原创 二分查找一>搜索插入位置

注意情况三target在数组外。

2024-10-04 19:58:28 242

原创 二分查找一>x 的平方根

【代码】二叉查找一>x 的平方根。

2024-10-04 01:01:33 217

原创 Mysql中的事务

事务具备的ACID特性,是我们使用事务的原因,在我们日常的业务场景中有⼤量的需求要⽤事务来保证。支持事务的数据库能够简化我们的编程模型, 不需要我们去考虑各种各样的潜在错误和并发问题,在使⽤事务过程中,要么提交,要么回滚,不⽤去考虑⽹络异常,服务器宕机等其他因素,因此我们经常接触的事务本质上是数据库对。支持事务的数据库中最基本的特性,一组SQL语句要么全部成功,要么全部失败,不会出现只执行了⼀半的情况,如果事务在执行过程中发生错误,会回滚( Rollback )到事务开始前的状态。

2024-10-03 17:42:16 1486 21

原创 二分查找一>:在排序数组中查找元素的第一个和最后一个位置

传统二分时间复杂度会降为O(N)

2024-10-03 00:19:32 312

原创 Fibonacci数列最小步数

让a,b,c回滚构造斐波那契数列 :a=b, b=c, c=a+b;最后再求n-b,c-n的最小值,获得最小步数。

2024-10-01 19:30:20 402

原创 牛客->除2!

从sum中减掉, 减小的值。

2024-10-01 00:32:37 262

原创 滑动窗口->dd爱框框

所以:当找到大于等于x的值时,right可以不用返回。1.进窗口:sum += array[right];3.出窗口:sum -= array[left];因此可以使用滑动窗口优化暴力解法。2.判断:sum >= x 时出窗口。灵活更新结果(满足结果后)因为元素都是大于0的。

2024-09-30 12:54:39 596

原创 数组中两个字符串的最小距离

【代码】数组中两个字符串的最小距离。

2024-09-29 00:24:56 161 1

原创 动态规划入门题目->使用最小费用爬楼梯

【代码】动态规划入门题目->使用最小费用爬楼梯。

2024-09-27 22:40:20 308

原创 牛牛的快递

自带的向上取整库函数:ceil。

2024-09-27 00:41:14 327 1

原创 括号匹配 “亲兄弟”->点击消除

相等就出栈,不相等入栈。peek一下字符,是否和栈里的字符相等,

2024-09-26 23:39:10 108

原创 两个数组的交集

【代码】两个数组的交集。

2024-09-26 00:56:33 399

原创 数据库之索引<保姆级文章>

将页内包括头行、尾⾏在内的所有⾏进⾏分组,约定头行单独为⼀组,其他每个组最多8条数据,同时把每个组最后⼀行在页中的地址,按主键从⼩到⼤的顺序记录在页⽬录中在,页⽬录中的每⼀个位置称为⼀个槽,每个槽都对应了⼀个分组,⼀旦分组中的数据行超过分组的上限8个时,就会分裂出⼀个新的分组;后续在查询某⾏时,就可以通过⼆分查找,先找到对应的槽,然后在槽内最多8个数据行中进行遍历即可,从⽽⼤幅提高了查询效率,这时⼀个页的核⼼结构就完成了。使⽤索引的⽬的只有⼀个,就是提升数据检索的效率,在应⽤程序的运⾏过程中,查。

2024-09-16 20:17:25 1950 36

原创 数据结构之红黑树的 “奥秘“

红黑树在经常进行增删的结构中性能比 AVL树更优,而且红黑树实现比较简单,所以实际运用中红黑树更多。红黑树不追求绝对平衡,其只需保 证最长路径不超过最短路径的2倍(相对平衡)每个结点上增加一个存储位表示结点的颜色。红黑树和AVL树都是高效的平衡二叉树。没有一条路径会比其他路径长出俩倍。先grandParent右旋。围绕红黑树上面的几条性质。

2024-09-09 19:10:22 1167 39

原创 数据结构之AVL树的 “奥秘“

对有n个结点的二叉搜索树,若每个元素查找的概率相等,则二叉搜索在二叉搜索树树平均查找长度是结点的深度的函数,即结点越深,则比较次数越多。如果需要 一种查询高效且有序的数据结构,而且数据的个数为静态的(即不会改变),可以考虑AVL树,但一个结构经常修 改,就不太适合。如果数据有序或接近有序二叉搜索树将退化为单支树,查找元素相当于在顺 序表中搜索元素,效率低下。保证每个结点的左右子树高度之差的绝对值不超过 1。情况一:subLR平衡因子等于-1。情况二:subLR平衡因子等于1。subLR的平衡因子区分情况。

2024-08-23 10:34:24 925 36

原创 探讨MySQL中 “约束“ 下的查询

创建学生表student,一个学生对应一个班级,一个班级对应多个学生。使用id为主键, classes_id为外键,关联班级表id。UNION 和UNION ALL时,前后查询的结果集中,字段需要一致也就是两张表要完全一致。左侧的表完全显示我们就说是左外连接;右侧的表完 全显示我们就说是右外连接。创建班级表classes,id为主键;多表查询是对多张表的数据取笛卡尔积。(返回一个集合,包含多个对象);表1 别名1 join 表2。查询与“韩立” 同学的同班同学。笛卡尔积其实是个全排列的过程。

2024-08-17 10:28:31 1589 28

原创 MySQL表的增删改查

目录: 一.新增数据二.查询数据三.修改数据四.删除数据 引言:CRUD 即增加(Create)、查询(Retrieve)、更新(Update)、删除(Delete)四个单词的首字母缩写一.新增数据:1.单行数据 + 全列插入:-- 插入两条记录,value_list 数量必须和定义表的列的数量及顺序一致INSERT INTO s

2024-08-14 17:35:37 1087 11

原创 MySQL数据库介绍及基础操作

MySQL的utf8编码不是真正的utf8,没有包含某些复杂的中文字符。MySQL真正的utf8是 使用utf8mb4,:甲骨文产品,适合大型项目,适用于做复杂的业务逻辑,如ERP、OA等企业信息系 统。:微软的产品,安装部署在windows server上,适用于中大型项目。字符集的校验规则(utf8mb4_0900_ai_ci):属于甲骨文,不适合做复杂的业务。二维表及其之间的联系所组成的一个数据组织。字符集( utf8mb4 )用来维护存储数据的结构。

2024-08-13 18:55:25 670 9

原创 Map和Set及哈希--的奥秘(详解)

Map中键值对的Key不能直接修改,value可以修改,如果要修改key,只能先将该key删除掉,然后再来进行。该内部类中主要提供了 的获取,value的设置以及Key的比较方式。从上图可以看出,开散列中每个桶中放的都是发生哈希冲突的元素。,这样才可以把,原来的哈希位置放到正确新对应的散列地址处,不能修改,如果要修改,先将原来的删除掉,然后再重新插入。实际上用的是红黑树,而红黑树是一棵近似平衡的二叉搜索树。,它或者是一棵空树,或者是具有以下性质的二叉树。

2024-08-06 22:37:01 1256 16

原创 排序大杂烩

所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。这样整体而言,可以达到优化的效果。导致很难去计算,因此在好些树中给出的希尔排序的时间复杂度都不固定,将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动。的空间复杂度,归并排序的思考更多的是解决在磁盘中的外排序问题。快速排序整体的综合性能和使用场景都是比较好的,所以才敢叫。当gap == 1时,数组已经接近有序的了,这样就会很。然后跟新下标,大的往后拿,小的往前放。,直到全部待排序的数据元素排完。

2024-08-04 23:07:19 715 18

原创 对优先级队列(堆)的理解

Ki = K2i+2) i = 0,1,2…简单来说小堆就是,堆的实现底层->完全二叉树,的每一棵树的父亲节点大于左右孩子节点就是大根堆,相反是小根堆。如果2 * i + 1 小于节点个数,则节点i的左孩子下标为2 * i + 1。如果2 * i + 2 小于节点个数,则节点i的右孩子下标为2 * i + 2。如果第 N-K个,比堆顶元素小,就把堆顶元素删除,把这个元素放入堆中。i为0,则i表示的节点为根节点。

2024-08-03 13:01:49 760 13

原创 二叉树基础及实现(二,加经典OJ)

(isBalanced(root.left) && isBalanced(root.right),去递归每一棵树的左右子树)时会重复去算高度。把二叉树元素放入队列中,如果最后队列里全部是元素,“null”,则该二叉树就是完全二叉树。这里和上面方法一样,只是在出栈时候,放入链表或者顺序表,又或者打印。时间复杂度为O(N^2,N的平方)

2024-07-25 10:36:58 697 17

原创 二叉树基础及实现(一)

(2). 除根结点外,其余结点被分成M(M > 0)个互不相交的集合T1、T2、......、Tm,其中。有一个特殊的结点(最上面的根,整个树的根),称为根结点,根结点没有前驱结点。,当且仅当其每一个结点都与深度为K的满二叉树中编号从0至n-1的结点。从根开始定义起,根为第1层,根的子结点为第2层,以此类推。若一个结点含有子结点,则这个结点称为其子结点的父结点;二叉树的链式存储是通过一个一个的节点引用起来的,一个结点含有的子树的根结点称为该结点的子结点;具有n个结点的完全二叉树的深度k为,(

2024-07-19 19:12:39 1071 9

原创 栈和队列深入浅出

因为LinkedList实现 Queu接口。只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈。主要就是定义两个队列做到 "先进后出。须实例化LinkedList的对象。写peek方法时,定义一个中间变量。只允许在一端进行插入数据操作。进行删除操作的一端称为队头。进行插入操作的一端称为队尾。定义两个栈做到 "先进先出。在另一端进行删除数据操作。压栈:栈的插入操作叫做。

2024-07-17 22:19:45 675 12

原创 对LinkedList ,单链表和双链表的理解

3.从堆上申请出来空间,是有它的分配规律和策略的,两次申请出来的可能连续也可能不续。从后往前用slow走,因为偶数节点,fast指针会走到null,无法往前走。六.ArrayList和LinkedList的区别。第一次相遇点,到入口点的距离,等于起始点到入口点的距离。四.LinkedList的模拟实现:无头双向链表实现。就比单链表多了一个,可以指向前一个节点的引用域,并且。回文时偶数情况下,A的下一个节点是slow节点,四.LinkedList的模拟实现。这个时候就要直接返回ture。

2024-07-14 17:26:57 827 15

原创 ArrayList与顺序表

依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。ArrayList,继承了很多类,并且扩展了很多接口使用,自身也有很多方法。底层是一段连续的空间,并且可以动态扩容,是一个动态类型的顺序表。3.真正扩容之前检测是否能扩容成功,防止太大导致扩容失败。不是线程安全的,在单线程下可以使用,在多线程中可以选择。:for循环+下标、foreach、使用迭代器。超过预估1.5倍大小,则按照用户所需大小扩容。检测是否真正需要扩容,如果是。物理地址连续的存储单元,预估需要库容的大小,

2024-06-14 20:03:12 1293 22

原创 数据结构之初识泛型

1.实现一个类,类中包含一个数组成员,使得数组中可以存放任何类型的数据,也可以根据成员方法返回数组中某个下标的值?泛型目前为止的优点:数据类型参数化,编译时自动进行类型检查和转换。只能使用具体的类型: 要么是基本类型,要么是自定义的类。问题是:1.如果数据太多,每次返回,向下转型太麻烦。注意:我们不要自己去使用裸类型,裸类型是为了。Comparable接口,可以直接使用。静态行为,不依赖对象,可以直接用类名调用。,这种刻板的限制对代码的束缚就会很大。表示当前类是一个泛型类。对类型实现了参数化。

2024-06-08 14:48:13 1219 12

原创 初识JAVA中的包装类,时间复杂度及空间复杂度

在计算机发展的早期,计算机的存储容量很小。所以对空间复杂度很是在乎。算机的存储容量已经达到了很高的程度。所以我们如今已经不需要再特别关注一个算法的空间复杂度。实际中我们计算时间复杂度时,我们其实并不一定要计算精确的执行次数。共2n+10,根据大O渐进法,时间复杂度为:O(n)。2^x/1 ==(1)找到的数字。, 其余基本类型的包装类都是首字母大写。,为了在泛型代码中可以支持基本类型,的空间,因为这个也没太大意义,所以。每次开辟,比之前少的一块空间。在修改后的运行次数函数中,空间复杂度算的是变量的个数。

2024-06-04 22:18:01 1018 12

原创 认识JAVA中的异常

程序中存在未释放的内存资源,导致内存占用不断增加,最终导致内存不足等等。,而是将异常报告给抛出异常方法的调用者,由调用者处理。如果抛出的是编译时异常,用户必须处理,否则无法通过编译。真正要对异常进行处理,就需要try-catch。如果抛出的是 RunTimeException。但是并不能完全表示实际开发中所遇到的一些异常。是异常体系的顶层类,其派生出两个重要的子类。如图:这里还用了,try处理catch捕捉。用好他们就,可以很好的处理异常了。,抛出一个指定的异常对象,将。中虽然已经内置了丰富的异常类。

2024-06-01 21:27:18 1710 23

原创 String 类

synchronized修饰,所以,在多线程情况下,可以保证线程安全(相当于他有一个锁,在做事时候不会被别人打扰),equals方法后,(简单来说,equals比较的是,对象里的内容)这两个类大部分功能是相同的,这里介绍。的不可更改特性,为了方便字符串的修改,的一些方法,其它需要用到了大家可参阅。则在单线程情况下,可以保证线程安全。比较的是变量中的值;就是引用,也可以理解为地址。String类重写了父类。我们构造字符串可以使用。

2024-05-30 22:10:08 1068 14

原创 JAVA实现图书管理系统(初阶)

数组相当于实例化了,扩展了接口的类,的方法,达到调用系统具体方法的作用。(实现了这个接口的,类就是,每个操作系统的方法)(在具体的下标,放书和返回书)

2024-05-26 20:41:10 707 7

原创 Cloneable 接口和深拷贝,浅拷贝

(这里我们的,NameComparator就是,一个构造器,为什么呢?就是我们这里规定,自定义Name来比较。还有这里我们自己,写了一个排序方法,通过sort,调用。注意:泛型哪里,计较哪个对象就写,哪个对象,是个空接口,就因为是,空接口才可以被继承。调用这个方法可以创建一个对象的。实现Cloneable 接口。如下代码,我们可以看到,通过。更换,重写方法,里的比较方式。中内置了一些很有用的接口。方法的注意事项:首先要先。money的引用,来克隆。(不要忘记向下转型)。这里结果反应了浅拷贝。

2024-05-24 12:45:27 468 6

原创 this引用,final,super,protected关键字(深入浅出+详细理解)

Java中引入了访问限定符,主要限定:类或者类中成员能否在类外或者其他包中被访问。(1) this的类型:对应类类型引用,即哪个对象调用就是哪个对象的引用类型。四.代码块,继承后的执行顺序:(看加载我在前面博客说过:如果不知道请点击,查看。由于设计不好,或者因场景需要,子类和父类中可能会存在相同名称的成员,如果要在。,编译器会自动传递,在成员方法执行时,编译器会负责将调用成员方法。(2) this只能在"成员方法"中使用,不能在静态方法中使用。只不过所有的操作对用户是透明的,即用户不需要来传递,

2024-05-20 22:19:49 654 11

原创 内部类,抽象类和接口(一)

抽象类必须被继承,并且继承后子类要重写父类中的抽象方法,否则子类也是抽象类必须要使用abstract 修饰。(5)抽象类中不一定包含抽象方法,但是有抽象方法的类一定是抽象类 (关系,和第四条,如出辙)中,该种内部类只能在其定义的位置使用,一般使用的非常少,此处简单了解下语法格式。(8) 如果类没有实现接口中的所有的抽象方法,则类必须设置为抽象类。面向对象的概念中,不是所有的类都是用来描绘对象的,接口的定义格式与定义类的格式基本相同,将。成员内部类,成员内部类又分为,没有。被static修饰的成员内部类。

2024-05-19 21:42:35 672 12

原创 对JAVA中多态的粗浅理解

圈复杂度是一种描述一段代码复杂程度的方式. 一段代码如果平铺直叙, 那么就比较简单容易理解. 而如果有很多的条件分支或者循环语句, 就认为理解起来更复杂.因此我们可以简单粗暴的计算一段代码中条件语句和循环语句出现的个数, 这个个数就称为 "圈复杂度".向下转型用的比较少,而且不安全,万一转换失败,运行时就会抛异常。,即在编译时,不能确定方法的行为,需要等到程序运行时,才能够确定具体调用那个类的方法。,即在编译时,根据用户所传递实参类型就确定了具体调用那个方法。多态的概念:通俗来说,就是多种形态,

2024-05-18 00:37:14 1121 9

自己加载的快排序动图,帮助学习

自己加载的快排序动图,帮助学习

2024-08-04

空空如也

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

TA关注的人

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