
数据结构与算法
奥兰治的威廉
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
玩转数据结构入门与进阶——第一章:数组
内容大纲:使用Java中的数组 二次封装属于我们自己的数组 向数组中添加元素 数组中查询元素和修改元素 包含,搜索,删除功能 使用泛型 动态数组 简单的时间复杂度分析 均摊复杂度和防止复杂度振荡一、java中的数组把数据码成一排进行存放java中一个简单的数组使用public class Main { public static void main(...转载 2018-10-31 10:38:11 · 284 阅读 · 0 评论 -
玩转算法面试:(四)LeetCode查找类问题
查找问题两类查找问题查找有无:元素’a’是否存在?set;集合 查找对应关系(键值对应):元素’a’出现了几次?map;字典通常语言的标准库中都内置set和map容器类屏蔽实现细节 了解语言中标准库里常见容器类的使用常见操作:insertfind erase:删除 change (map)349. Intersection of Two Arrays...转载 2018-11-18 16:33:00 · 241 阅读 · 0 评论 -
玩转算法面试:(三)LeetCode数组类问题
数组中的问题其实最常见。排序:选择排序;插入排序;归并排序;快速排序查找:二分查找法数据结构:栈;队列;堆……如何写出正确的程序建立一个基础的框架,什么是正确的程序二分查找法:- 二分查找法的思想在1946年提出。- 第一个没有bug的二分查找法在1962年才出现。对于有序数列,才能使用二分查找法 (排序的作用)二分查找:前提排序会用自然语言描述谁都会,...转载 2018-11-18 16:32:21 · 290 阅读 · 0 评论 -
玩转算法面试:(二)面试中的复杂度分析
面试中的时间复杂度分析到底什么是大On表示数据规模O(f(n)) fn是关于n的一个函数。表示运行算法所需要执行的指令数,和f(n)成正比。常见算法复杂度和a.b.c.d这些常数项关系不大。主要还是看它是哪个层级的。算法A:O(n) 所需执行指令数:10000n算法B:O(n^2) 所需执行指令数:10n^2n的规模逐渐增大。算法a.b的指令数变化。...转载 2018-11-18 16:31:20 · 454 阅读 · 0 评论 -
玩转算法面试:(一)什么是算法面试?
前言对于面试中遇到的大多数问题都能有一个合理的思考路径沟通:边界条件是怎样的? 数据范围如何? 某些术语是具体如何定义的?基础数据结构算法设计思想:递归分治 贪心 动态规划 回溯搜索LeetCode 3 Longest Substring Without Repeating Characters在一个字符串中寻找没有重复字母的最长子串如”abca...转载 2018-11-18 16:28:49 · 253 阅读 · 0 评论 -
玩转数据结构——第八章:线段树(区间树)
线段树(Segment Tree)内容概览:一、什么是线段树?二、线段树的基础表示三、创建线段树四、线段树中的区间查询五、LeetCode上线段树相关的问题六、线段树的更新操作七、线段树更多相关的问题为什么要使用区间树?对于给定区间 更新:更新区间中一个元素或者一个区间的值,数组的实现是级别 查询:查询一个区间[i,j]的最大值,最小值,或者区间数字和,...转载 2018-11-02 16:55:43 · 194 阅读 · 0 评论 -
玩转数据结构——第七章:优先队列和堆
内容概要:什么是优先队列? 堆的基础结构 向堆中添加元素Sift Up 从堆中取出元素和Sift Down Heapify和Replace 基于堆的优先队列 LeetCode上优先队列相关的问题 java中的PriorityQueue 和堆相关的更多话题和广义队列一、什么是优先队列?不同树的数据结构四种例子:堆 线段树 字典树 并查集什么是优先队列?普通队...转载 2018-11-02 16:52:00 · 298 阅读 · 0 评论 -
玩转数据结构——第六章:集合和映射
集合(Set)什么是集合?集合是承载元素的容器;特点:每个元素只能存在一次优点:去重二分搜索树的添加操作add:不能盛放重复元素 是非常好的实现“集合”的底层数据结构/** * 集合的接口 */public interface Set<E> { void add(E e);//添加 <——<不能添加重复元素 void ...转载 2018-11-01 16:32:13 · 171 阅读 · 0 评论 -
玩转数据结构——第五章:二分搜索树
内容概要:为什么要研究树结构 二分搜索树基础 向二分搜索树中添加元素 改进添加操作:深入理解递归终止条件 二分搜索树的查询操作 二手搜索树的前序遍历 二分搜索树的中序遍历和后序遍历 深入理解二分搜索树的前中后遍历(深度遍历) 二分搜索树是的前序遍历的非递归实现 二分搜索树的层序遍历(广度遍历) 删除二分搜索树的最大元素和最小元素 删除二分搜索数的任意元素1-为什么要研究...转载 2018-11-01 15:37:20 · 173 阅读 · 0 评论 -
玩转数据结构——第四章:链表和递归
内容概要:Leetcode中和链表相关的问题 测试自己的Leetcode链表代码 递归继承与递归的宏观语意 链表的天然递归结构性质 递归运行机制:递归的微观解读 递归算法的调试 更多和链表相关的问题1-Leetcode中和链表相关的问题题目:删除链表中等于给定的val的所有元素。示例:给定:1—>2—>6—>3—>4—>5—>6...转载 2018-11-01 08:45:51 · 217 阅读 · 0 评论 -
玩转数据结构——第三章:最基础的动态数据结构:链表
内容概括:3-1.什么是链表 3-2.在链表中添加元素 3-3.使用链表的虚拟头结点 3-4.链表的遍历,查询和修改 3-5.从链表中删除元素 3-6.使用链表实现栈 3-7.带有尾指针的链表:使用链表实现队列3-1.什么是链表链表:真正的动态数据结构 最简单的动态数据结构 更深入的理解引用(或者指针) 更深入的理解递归 辅助组成其他数据结构链表Linked ...转载 2018-10-31 19:59:02 · 183 阅读 · 0 评论 -
玩转数据结构——第二章:栈和队列
内容概览:栈和栈的应用:撤销操作和系统栈 栈的基本实现 栈的另外一个应用:括号匹配 关于Leetcode的更多说明 数组队列 循环队列 循环队列的实现 数组队列和循环队列的比较2-1.栈(Stack)栈也是一种线性结构 相比数组,栈对应的操作是数组的子集 只能从一端添加元素,也只能从一端取出元素 这一端称为栈顶 栈是一种先进后出的数据结构 Last In Firs...转载 2018-10-31 19:02:15 · 214 阅读 · 0 评论 -
玩转算法面试:(五)LeetCode链表类问题
在链表中穿针引线链表和数组都是线性结构,但是链表和数组的不同在于数组可以随机的对于数据进行访问。给出索引。可以以O(1)的时间复杂度迅速访问到该元素。链表只能从头指针开始。next指针指向哪里?206. Reverse Linked List反转一个链表链表反转不能改变链表值。操作每个节点的next指针。5的指针指向空的。变成指向4的。next改变示意图...转载 2018-11-18 16:33:33 · 148 阅读 · 0 评论