- 博客(24)
- 收藏
- 关注
原创 Java-数构map和set
如果构造一种存储结构,通过某种函数使得元素的存储位置和它的关键码之间能够建立一一映射关系,那么查找的时候通过函数可以很快的查找到该元素。,首先对关键码集合用散列函数计算散列地址,具有相同地址的关键码归于同一子集合,每一个子集合称为一个桶,各个桶中的元素通过一个单链表链接起来,各链表的头结点存储在哈希表中。在实际过程种,哈希表的冲突率是不高的,冲突个数是可控的,也就是说每一个中的链表长度是一个常数,所以,通常意义下,我们认为。关键字的个数是不可变的,对元素的关键码 key 进行计算得到的位置,m是表的大小。
2025-08-14 17:04:43
528
原创 Java-数构排序
排序就是使得一串记录,按照其中的某个或者某些关键字的大小,递增或者递减的排列起来的操作。假如在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对序列不变,仍然在原序列中,即r[i]=r[j],且r[i]在r[j]之前,而在排序后之后两者顺序不变则称这种排序算法稳定。:数据元素全部放在内存中排序:数据元素过多不能同时放在内存中,根据排序过程的要求不能在内外存之间移动数据的排序。
2025-07-28 14:43:38
899
原创 Java-数构优先级队列
队列是一种先进先出的结构,但是有些情况下,操作的数据带有优先级,一般出队列时,可能需要优先级高的元素先出队列。因此可以实现两个基本操作,一个是返回最高优先级对象,另一个时添加新的对象。
2025-07-26 15:23:55
866
原创 Java-数构栈与队列
栈是一种特殊的线性表,其只允许在固定的一段进行插入和删除元素操作。进行数据插入和删除的操作的一段称为栈顶,请一段称为栈底。栈中元素遵循后进先出的原则。压栈:栈的插入操作叫做进栈/入栈/压栈,输入的数据在栈顶。出栈:栈的删除操作叫做出栈。
2025-07-16 15:54:57
322
原创 Java-数构链表
链表是一种存储结构,数据元素的是通过链表中次序实现的。这里大多讨论。这种结构,结构简单,一般与其他数据结构结合,作为其他数据结构的子数据。
2025-07-16 11:00:32
747
原创 Java-数构2-顺序表
是一个序列。元素之间是由顺序的,若存在多个元素,第一个元素无前驱,最后一个元素无后继,其他每一个元素都有且只有一个前驱和后继。
2025-07-09 16:07:39
239
原创 Java-数构1-泛型与时空复杂度
在Java中,由于基本类型不是继承自Object类,为了在泛型代码中支持基本类型,java给每个基本类型都有一个包装类型。
2025-07-08 15:12:41
911
原创 JAVA-抽象类与接口
在java中,一个类被abstract修饰称为抽象类,抽象类中被abstract修饰的方法称之为抽象方法。抽象方法不用给出具体的实体注意:抽象类也是类,可以包含普通的方法,属性,构造方法。
2025-07-05 15:13:46
595
原创 Java学习日记--继承与多态
Java在对现实实体进行实例化后的产物对象之间可能会存在一些关联。可以看到dog和cat类之间存在大量的重复变量和代码块,如图:因此面向对象的思想中提出了继承的概念,专门用来对共性进行提取,实现代码的复用。
2025-06-21 15:52:45
891
原创 Java-类和对象
类是用来对一个实体(对象)进行描述的。描述对象的属性和功能。(类比于c语言的结构体)//创建类field;//成员变量method;//行为或者成员方法//成员变量:定义在方法外部,类的内部//成员方法return age;System.out.println("姓名"+this.name+"年龄"+this.age);return "姓名"+this.name+"年龄"+this.age;类名注意采用大驼峰定义一般一个文件中只定义一个类。
2025-03-27 13:51:26
676
原创 回溯算法(组合型,排列型,子集型)
路径的长度刚好会与当前层的元素个数相同枚举path[i]是左括号还是右括号构造字符串>=i的部分构造字符串>=i+1的部分open用于记录左括号的个数,i-open用于记录右括号的个数解法一:path用于记录已选择的数字,s用于存放还没有被选择的数字,枚举s中的数字放到path中,剩余未选数字集合为s-{x}解法二:创造一个布尔数组,判断元素是否被选择过,没有被选则放入路径中,被选择了改成true。注意,需要,不然可能导致数字之后无法在被选择。
2025-03-13 19:51:49
402
原创 二叉树-递归思想
初始化数组cur用于贮存当前行的节点,vals用于储存节点元素,nxt用于储存下一行的节点。先遍历右子树,计算右边子树的深度,左边子树只要深度比右边子树的深度要大就不会被挡住,则可以记录当前值。求最大深度的问题可以看成是重复遍历左右子树,求左右子树的最大深度。1、当前节点是空节点,或者节点是p或者是q,或者左右子树中都有pq的时候返回当前节点。如果pq都小于当前节点,说明都在左子树,pq都大于当前节点说明都在右子树。层序遍历(广度优先搜索),遍历完当前层的所有节点之后,再去遍历下一行。
2025-03-08 16:07:56
361
原创 二分法-2
找出一行的最大值与它相邻下一行数字进行比较,若mat[i]最大值比它相邻数字大,则存在峰值,行号小于或等于i,更新right。若mat[i]最大值比它相邻下一行数字小,则存在一个峰顶,行号大于i,更新left。本题与上一题的差距在于,数组中存在重复元素。那么最后一个元素可能与num[mid]相同,导致无法确定左右区间。因此可以去掉最后一个元素,看成是元素为n-1个子数组。数组要么是递增序列,要么分为两个递增序列。寻找最小值可以与数组最后一个数大小进行比较。
2025-03-02 14:47:59
281
原创 Java初学日志
【建议】类名:每个单词的首字母大写大驼峰方法名:首字母小写,后面每个单词的首字母大写小驼峰变量名:与方法名规则相同4.Java中数据类型与变量4.1字面常量常量为程序运行期间,固定不变的量为常量。字面常量分类:字符串常量,整型常量,浮点数常量,字符常量,布尔常量,空常量(NULL)
2025-03-01 22:23:27
805
原创 刷题日记-二分法
时,左指针右移,left->mid+1,此时区间相当于[mid+1,right]。其余情况下右指针左移,right->mid-1,此时区间相当于[left,mid-1]。时,左指针右移,left->mid+1,此时区间相当于[mid+1,right)。其余情况下右指针左移,right->mid,此时区间相当于[left,mid)。时,左指针右移,left->mid,此时区间相当于(mid,right)。其余情况下右指针左移,right->mid,此时区间相当于(left,mid)。right始化应该是。
2025-03-01 00:33:14
817
原创 刷题日记--滑动窗口
3.cost记录花销,当cost>maxcost时花费过多,进入while循环,减小滑动窗口的长度,移动s,t的左边界限,重新计算cost,直到cost<maxcost,退出循环。是 Python 中的一个内置函数,用于在遍历可迭代对象(如列表、元组、字符串等)时,同时获取元素及其对应的索引。是 Python 中的一个内置函数,用于将多个可迭代对象(如列表、元组、字符串等)中的元素打包成一个个元组,然后返回由这些元组组成的迭代器。下标为i-2k的元素离开窗口,窗口元素和s(表示窗口中元素合)减少。
2025-02-25 16:18:29
768
原创 c语言概念
我们在使用变量的时候要进行格式化,比如%d代表整型,%f代表浮点型(计算至小数点后六位),%c代表字符型,%s代表字符串。常见的编译器有:msvc,clang,gcc。我们在于计算机交流的时候,将字符和数字写入计算机,但计算机对字符的识别需要借助ASII码,常用的ASII码有:a~z:97-122,A~Z:65-90,0~9:48~51。函数又称为主函数,是程序的入口,程序从main函数的第一行开始运行,一个程序有且只有一个main函数。需要注意的是main函数也有参数,需要使用的时候再写出来就行。
2024-08-01 22:36:19
287
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人