数据结构与算法
数据结构与算法
YETA
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
记《剑指Offer》
本文内容基于《剑指Offer名企面试官精讲典型编程题》。 1数组中重复的数字 1.1不修改数组找出重复的数字(二分查找) 2二维数组中的查找 3 替换空格 3.1合并有序数组(从右到左的思想) 4 从尾到头打印链表 5 重建二叉树 6 二叉树的下一个节点 7 用两个栈实现队列 7.1用两个队列实现栈 8斐波那契数列 8.1青蛙跳台阶 8.2矩形覆盖 9 ...原创 2019-09-17 20:55:44 · 2176 阅读 · 0 评论 -
Java程序员面试笔试宝典-数据结构与算法(四)
1. 链表 1.1 如何实现单链表的增删操作? 1.2 如何从链表中删除重复元素? 1.3 如何找出单链表中的倒数第k个元素? 1.4 如何实现链表的反转? 1.5 如何从尾到头输出单链表? 1.6 如何寻找单链表的中间节点? 1.7 如何检测一个链表是否有环? 1.8 如何在不知道头指针的情况下删除指定节点? 1.9 如何判断两个链表是否相交? 2. 栈与队列 2.1...原创 2019-07-04 20:18:40 · 2246 阅读 · 0 评论 -
漫画算法-小灰的算法之旅-算法的实际应用(六)
1. Bitmap的巧用 1.1 查询 1.2 去重 1.3 Bitmap的代码实现 2. LRU算法的应用 2.1 实例问题 2.2 代码实现 3. A星寻路算法 4. 红包算法 4.1 二倍均值法 4.2 线段切割法 1. Bitmap的巧用 Bitmap算法,又叫做位图算法,这里所说的位图并不是像素图片的位图,而是内存中连续的二进制位所组成的数据结构,该算法主要...原创 2019-06-27 16:28:43 · 1764 阅读 · 0 评论 -
漫画算法-小灰的算法之旅-面试中的算法(五)
1. 如何判断链表有环? 1.1双重遍历 1.2哈希表 1.3追及问题 1.4如果链表有环,如何求出环的长度? 1.5如果链表有环,如何求出入环节点? 2.最小栈的实现? 3.如何求出最大公约数? 3.1暴力枚举法 3.2辗转相除法 3.3更相减损术 3.4基于移位的更相减损术 4.如何判断一个数是否为2的整数次幂? 4.1枚举 4.2...原创 2019-06-25 16:23:03 · 2264 阅读 · 0 评论 -
漫画算法-小灰的算法之旅-排序算法(四)
1. 分类 1.1时间复杂度为O(n^2)的排序算法 1.2时间复杂度为O(nlogn)的排序算法 1.3时间复杂度为线性的排序算法 1.4稳定性 1.5本文中涉及的排序总结 2.冒泡排序 2.1思想 2.2代码实现 2.3代码优化1 2.4代码优化2 2.5代码优化3 3.快速排序 3.1思想 3.2基准元素的选择 3.3单边循环...原创 2019-06-17 20:57:17 · 3492 阅读 · 0 评论 -
漫画算法-小灰的算法之旅-树(三)
1.树 2.二叉树 2.1 满二叉树 2.2 完全二叉树 3.二叉树的应用 3.1查找 3.2维持相对顺序(插入) 4.二叉树的遍历 5.二叉堆 6.优先队列 1.树 树是n个节点的有限集。当n=0时,称为空树。在任意一个非空树中,有如下特点: 有且仅有一个特定的称为根的节点; 当n>1时,其余节点可分为m个互不相交的有限集,每一个集合本身又...原创 2019-06-13 16:50:58 · 2979 阅读 · 0 评论 -
漫画算法-小灰的算法之旅-数据结构基础(二)
1.逻辑结构和物理结构 2.数组 VS链表 3.栈 4. 队列 5.散列表 1.逻辑结构和物理结构 逻辑结构: 线性结构: 顺序表、栈、队列 非线性结构: 树、图 物理结构: 顺序存储结构: 数组 链式存储结构: 链表 2.数组 VS链表 相关操作的性能: 查找 更新 插入 ...原创 2019-06-10 20:16:14 · 2273 阅读 · 0 评论 -
漫画算法-小灰的算法之旅-算法概述(一)
1.1什么是算法 1.2什么是数据结构 1.3时间复杂度 1.4空间复杂度 1.1什么是算法 本文中的算法指的是计算机科学领域的算法,它的本质是一系列程序指令,用于解决特定的运算和逻辑问题。 1.2什么是数据结构 数据结构是算法的基石,是数据的组织、管理和存储格式,其使用目的是为了高效地访问和修改数据。 1.3时间复杂度 程序中最常见的4种执行方式: 代码的基本操...原创 2019-06-10 17:13:32 · 5160 阅读 · 0 评论 -
数据结构与算法分析之优先队列(堆)-Java语言描述(五)
参考以下场景: 若在打印机有空时正好有多个单页的作业及一项100页的作业等待打印,则更合理的做法也许是最后处理长的作业,尽管它不是最后提交上来的。 在多用户环境中,操作系统调度程序必须决定在若干进程中运行哪个进程,一般来说,短的作业要尽可能快地结束,应该拥有优先权。 这些特殊的应用需要一类特殊的队列,称之为优先队列。 1.模型 优先队列是允许至少两种操作的数据结构:insert以及del...原创 2019-05-13 15:57:51 · 345 阅读 · 0 评论 -
数据结构与算法分析之散列-Java语言描述(四)
散列表的实现叫做散列。散列是一种用于以常数平均时间执行插入、删除和查找的技术。 1.一般想法 理想的散列表数据结构只不过是一个包含一些项的具有固定大小的数组。通常查找是对项的某个部分进行的,这部分叫做关键字。 每个关键字被映射到从0到TableSize - 1这个范围中的某个数,并且被放到适当的单元中,这个映射叫做散列函数,理想情况下它应该计算起来简单,并且应该保证任何两个不同的关键字映射...原创 2019-05-09 19:15:11 · 601 阅读 · 0 评论 -
数据结构与算法分析之树-Java语言描述(三)
1.预备知识 1.1树的实现 1.2树的遍历及应用 2.二叉树 2.1实现 2.2例子:表达式树 3.查找树ADT-二叉查找树 4.标准库中的集合与映射 4.1 Set接口 4.2 Map接口 4.3 TreeSet类和TreeMap类的实现 1.预备知识 树可以用几种方式定义。定义树的一种自然的方式是递归。一棵树是一些节点的集合。这个集合可以是空集...原创 2019-05-09 15:26:15 · 513 阅读 · 0 评论 -
数据结构与算法分析之表、栈和队列-Java语言描述(二)
1.抽象数据类型 抽象数据类型(ADT)是带有一组操作的一些对象的集合,诸如表、集合、图以及它们各自的操作一起形成的这些对象都可以被看作是抽象数据类型。 Java类也考虑到ADT的实现,不过适当地隐藏了实现的细节。这样,程序中需要对ADT实施操作的任何其他部分可以通过调用适当的方法来进行。 2.表ADT 2.1表的简单数组实现 对表的所有这些操作都可以通过使用数组来实现,数组的实现...原创 2019-05-07 19:07:51 · 270 阅读 · 0 评论 -
数据结构与算法分析之泛型-Java语言描述(一)
1. 实现泛型构件 pre-Java 5 面向对象的一个重要目标是对代码重用的支持,支持这个目标的一个重要的机制就是泛型机制:如果除去对象的基本类型外,实现方法是相同的,那么就可以用泛型实现来描述这种基本的功能。 Java 5以前,Java不直接支持泛型实现,泛型编程的实现是通过使用继承的一些基本概念来完成的。 1.1使用Object表示泛型 Java中的基本思想就是可以通过使用像Obj...原创 2019-05-07 15:35:06 · 230 阅读 · 0 评论
分享