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