
从零开始手撕一个数据结构
Yuc0114
大四学生,Java后端不断学习中...
展开
-
从零开始手撕一个数据结构(3)——基于数组实现有界队列
前言 这个系列咕了好久啦 今天没事做看了一下王道考研的数据结构,看着看着才想起来我的数据结构系列拖了好久了,上来水一篇比较简单而巧妙的数组实现队列吧~ 源码 有界队列 看完代码有收获的话,别忘了点个Star哦~ 导航前言源码有界队列的实现思考取模的作用实现一、基本字段 & 构造方法二、出队 & 入队三、其它方法四、测试用main方法 有界队列的实现 我们上次用链表实现过队列,用链表可以实现有界或者无界的队列,那么可不可以用数组来实现队列呢,答案是肯定的 思考 在链表中,我们可以使用头尾指原创 2020-10-23 02:39:16 · 239 阅读 · 0 评论 -
蛋疼的面试题:用栈实现队列 & 用队列实现栈
这里写目录标题前言源码栈实现队列思路容器设计类定义方法实现1. 栈的“倒腾”2. 入队操作3.出队操作队列实现栈思路容器设计类定义方法实现1. 最简单的empty方法2. 入栈方法3. 队列转换方法4. 出栈方法5. 取栈顶元素方法总结 前言 题目上的这两题可以说是经典题目了: 剑指 Offer 09: 双栈实现队列 leetcode 225: 队列实现栈 有关于栈和队列,我们之前也讨论过: 从零开始手撕一个数据结构(2)——基于链表实现栈和队列 我们都知道,栈和队列,一个是LIFO,一个是FIFO,那么怎原创 2020-09-11 22:14:55 · 398 阅读 · 1 评论 -
多重双向链表实现LFU算法
导航前言源码一、思路二、核心定义1. 类的层次2. 链表节点类3. 多重链表类1)类的字段2)构造方法3)方法实现a. 添加数据方法putb. 删除指定key的节点方法*c. toString方法4. LFU实现类1)类的字段2)构造方法3)私有方法a. “链链表”的尾删b. “链链表”的头插c. 基于频次找到对应链表d. 对内展示缓存中的元素总数e. 数据频次自增4)实例方法a. 新增数据的put方法b. 获取数据值的get方法c. 显示缓存数据个数方法*d. toString方法总结 前言 昨天在 le原创 2020-09-10 22:47:34 · 908 阅读 · 2 评论 -
面试官:不用集合框架给我写一个LRU
这里写目录标题前言源码一、如何设计?二、核心定义1. 类设计2. 内部类三、方法实现1. 头插方法addToHead2. 尾删方法removeLast3. 通过key寻找节点4. 将节点移动到链头5. 添加键值对的put方法6. 查询数据方法get7. 其它containsisEmptytoString四、总结 前言 上次我们介绍了LRU的思想,并借助Java集合框架中的LinkedList和HashMap非常简单的实现了一个LRU:手撕面试题算法(1)——LRU算法 但是,在面试中要是借助集合框架写LRU原创 2020-09-08 21:28:02 · 297 阅读 · 0 评论 -
从零开始手撕一个数据结构(2)——基于链表实现栈和队列
系列文章目录 从零开始手撕一个数据结构(1)——双向链表 文章目录系列文章目录前言栈容器设计一、要设计哪些实例方法?二、实现步骤1. 核心定义1)创建基于双链表的栈容器类LinkedStack2)定义双链表节点内部类Node2. 方法实现1)入栈方法push2)出栈方法pop3)获取栈顶元素方法peek4)检验栈是否为空方法isEmpty()3. 测试队列容器设计一、要设计哪些实例方法?二、实现步骤1. 核心定义1)创建基于单链表的栈容器类LinkedStack2)定义单链表节点内部类Node2. 方法实原创 2020-08-27 14:03:42 · 1157 阅读 · 0 评论 -
从零开始手撕一个数据结构(1)——双向链表
前言 刚做完某厂的笔试,要求实现一个LRU算法,没有复习到LRU的我直接就凉了一半了 闲着没事把数据结构都过一遍吧,加深一下印象 作为《从零开始手撕一个数据结构》的第一篇,先从最简单的链表开始吧~ 文章目录前言一、要实现一个什么样的结构?二、实现步骤1. 核心定义1) 创建链表容器类LinkedList2)定义链表核心内部类ListNode2. 方法实现1)添加元素的add方法2)查询元素的get方法3)删除元素的remove方法4)修改元素的set方法5)返回当前链表长度的size方法总结 一、要实原创 2020-08-21 21:59:45 · 1306 阅读 · 7 评论