数据结构
文章平均质量分 88
快到锅里来呀
种一棵树最好的时间是十年前,其次是现在
展开
-
数据结构之详解【Map和Set】
1.Map是一个接口,不能直接实例化对象(要实例化对象可以实现类TreeMap或HashMap)2.Map中存放键值对的key是唯一的,value是可以重复一样的3.Map中key可以全部分离开,存储在Set中去进行访问(因为key不可以重复)4.Map中value可以全部分离开,存储在Collection的任何一个子集合中(value可以重复)5.Map中key不能直接修改,如果必须修改就要先删除key,在进行重新插入6.HashMap的存储 是根据底层的哈希函数和key,去找对应的位...原创 2022-07-28 08:30:00 · 1706 阅读 · 48 评论 -
【Map与Set】之LeetCode&牛客练习
1. 只出现一次的数字2. 复制带随机指针的链表3. 宝石与石头4. 旧键盘5. 前k个高频单词原创 2022-07-30 08:30:00 · 399 阅读 · 68 评论 -
反射、枚举以及lambda表达式
java的反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能调用它的任意方法和属性,既然可以拿到,那就可以修改部分类型信息;这种动态获取信息以及动态调用方法的功能称为java语言的反射机制枚举是在JDK1.5引入使用的作用:将一组常量组织起来,在这之前表示一组常量通过使用定义常量的方式本质:是java.lang.Enum的子类,也就是自定义的枚举类,就是没有显示继承Enum,默认也继承了这个类...原创 2022-07-26 14:58:12 · 799 阅读 · 70 评论 -
数据结构之详解【排序算法】
2.直接插入排序(有序使用最好)3.希尔排序(缩小增量算法)4.直接选择排序5.堆排序6.冒泡排序7.快速排序(无序使用最好)7.1 递归实现7.1.1 Hoare法 找基准7.1.2 挖坑法(建议用这个)7.1.3 前后指针法7.1.4 三数取中找基准8.归并排序9.计数排序(不比较)10. 基数排序11. 桶排序............原创 2022-07-20 08:30:00 · 1249 阅读 · 78 评论 -
数据结构之优先级队列【堆】(Heap)
(1)优先级队列底层是堆来实现的(2)堆的本质是完全二叉树 ,堆有大根堆和小根堆(3)大根堆:根节点最大的堆; 小根堆:根节点最小的堆(6)top-K问题:前K个最大的元素建小根堆;前K个最小的元素建大根堆第K个最大元素建小根堆 拿栈顶; 第K个最小元素建大根堆 拿栈顶(7)堆排序:升序:大根堆 降序:小根堆核心思想:堆元素的删除...原创 2022-07-17 08:00:00 · 2624 阅读 · 94 评论 -
【二叉树】之力扣牛客必刷题
1. 相同的树2. 另一颗树的子树3. 二叉树的最大深度4. 平衡二叉树5. 对称二叉树6. 二叉树的构建及遍历7. 二叉树的层序遍历8. 二叉树的最近公共祖先9. 二叉搜索树与双向链表10. 从前序遍历与中序遍历序列构造二叉树11. 从中序遍历与后序遍历序列构造二叉树12. 根据二叉树创建字符串13. 二叉树的前序遍历14. 二叉树的中序遍历15. 二叉树的后序遍历...原创 2022-07-15 08:45:00 · 854 阅读 · 98 评论 -
树(Tree)和二叉树
二叉树性质(1)在二叉树的第i层上至多有2^(i-1)个结点(i>=1)(2)深度为k的二叉树至多有2^k-1个结点(k>=1)可以看上面的图,深度为4,一共有2^4 -1= 15个结点(3)对于任何一颗二叉树T,如果其终端结点数为n0,度为2的结点数为n2,则n0=n2+1(4)具有n个节点的完全二叉树深为log2x+1(其中x表示不大于n的最大整数)(5)如果对一颗有n个结点的完全二叉树(其深度为[log2n]+1)的结点按层序编号(从 层到[log2......原创 2022-07-13 09:00:00 · 3534 阅读 · 68 评论 -
顺序表实现简单的【扑克牌】
1. 准备一张牌2. 拿一副牌出来3.洗牌(打乱牌的顺序)4.开始发牌原创 2022-07-12 09:00:00 · 645 阅读 · 53 评论 -
数据结构之队列(Queue)
栈的定义:队列是一种特殊的线性表,它只允许在一端进行插入(队尾)数据操作,在另一端进行删除(队头)数据操作。队列具有先进先出的特点队列的实现也是有两种方式数组实现,链表实现双端队列(Deque)是指在两端都可以进行入队和出队的操作的队列不过需要注意的是,不能将一个数据,在一端进行入队和出队操作,不然这样就成了栈...原创 2022-07-11 09:00:00 · 1462 阅读 · 41 评论 -
深入理解栈(Stack)
栈是一种特殊的线性表,它特殊在只能在一端进行插入删除操作,并且最重要的是先进后出(1)栈顶:进行数据插入和删除操作的一端(2)栈顶:栈顶的另一端(3)入栈:栈的插入操作,也叫做压栈/进栈,入数据在栈顶(4)出站:栈的删除操作,出数据也在栈顶中缀变后缀三步走(1)按规则加括号 (2)将运算符放括号外面 (3)去掉所有括号后缀计算4步走(1)将数字按顺序依次放入栈中(2)遇到运算符后,拿出栈顶两个元素(3)计算(次栈顶元素 运算符栈顶元素)(4)将计算的结果,继续放入栈中...原创 2022-07-09 09:00:00 · 8025 阅读 · 102 评论 -
链表和LinkedList
ArrayList和LinkedLIst不同点1.实现方式:动态数组;双向链表2.存储空间:一定连续;逻辑上连续,物理上不一定3.随机访问:支持高效的随机访问;不支持4.应用场景:高效存储+频繁访问;任意位置频繁插入删除5.内存占用:存储数据+结点指向后 消耗小; 存储数据+结点指向前+指向后 消耗大6.插入:空间不够时需要扩容; 没有容量的概念,只需拉链条7.非线程安全:基于动态数组实现的非线程安全的集合;基于链表实现的非线程安全的集合原创 2022-07-08 09:00:00 · 477 阅读 · 47 评论 -
ArrayList与顺序表
1.List接口2.ArrayList与顺序表2.1 线性表2.2 顺序表2.3 ArrayList说明2.3.1 ArrayList简介2.3.2 ArrayList使用2.3.3 ArrayList的扩容机制2.3.4 ArrayList的遍历原创 2022-07-07 09:00:00 · 451 阅读 · 32 评论 -
链表面试常见题
牛客力扣中一些链表面试常见题1.移除链表元素 2.反转链表 3.链表的中间结点4.链表中倒数第k个结点 5.合并两个有序链表6.链表分割 7.链表的回文结构8.相交链表 9.环形链表 10.环形链表II.........原创 2022-07-06 09:00:00 · 703 阅读 · 42 评论 -
详解Java【泛型】
(1)类名后的叫占位符,意思就是当前的类是泛型类(2)不需要进行强制类型转化(3)Java中,不可以new泛型类型的数组(4)注意中必须要引用类型(5)泛型类使用中可以省略类型实参的填写擦除机制就是,在编译的过程中,将泛型T替换为Object,并且擦除机制就是编译时期的一种机制,运行期间没有泛型这个概念通配符是用来解决泛型无法协变的问题的通配符的上界,不能进行写入数据,只能进行读取数据。...原创 2022-07-10 12:41:02 · 4732 阅读 · 106 评论 -
时间复杂度和空间复杂度计算
时间复杂度和空间复杂度计算方法大O阶方法原创 2022-04-18 17:30:31 · 4159 阅读 · 18 评论