摘要:
本文整理来源 《轻松学算法——互联网算法面试宝典》/赵烨 编著 插入排序 什么是插入排序 插入排序分为两种,一种是直接插入排序,一种是二分法插入排序。这两种排序实际上都是插入排序,唯一的不同就是插入的方式不一样。 插入排序就是往数列里面插入数据元素。一般我们认为插入排序就是往一个已经排好顺序的待排序 阅读全文
摘要:
本文整理来源 《轻松学算法——互联网算法面试宝典》/赵烨 编著 算法基础 对于算法性能分析来说,除了时间复杂度,还是有空间复杂度、稳定性等指标。而我们平时说的算法的复杂度可以分为两个部分:时间复杂度和空间复杂度。 时间复杂度 在科学计算中,算法的时间复杂度是一个函数,它定量地描述了一个算法的运行时间 阅读全文
摘要:
汉诺塔 栈的数据结构非常适合汉诺塔来解释,因为二者的操作原理是一样的,由此也衍生了针对汉诺塔的依稀额算法。其中一个就是三根柱子的汉诺塔的移动步骤。 汉诺塔的移动原理 这里我们详细的介绍一个汉诺塔的移动原理,假设三根柱子分别是A、B、C,一开始A上有N个圆盘,从小到大、从上到下分别是1、2...... 阅读全文
摘要:
本文整理来源 《轻松学算法——互联网算法面试宝典》/赵烨 编著 链表其实也可以使用数组模拟 在C或者C++语言中有“指针”的概念。因为这个概念,链表在编程语言中能够方便地得以发挥作用,但并不是所有的编程语言中都有这个指针概念,比如Java。虽然没有“指针”这个概念,但是Java有“引用”的概念,类似 阅读全文
摘要:
本文整理来源 《轻松学算法——互联网算法面试宝典》/赵烨 编著 链表 虽然在很多的高级语言中,链表已经尽量的被隐藏起来,而且其应用之处还有很多的。 什么是链表 链表与数据结构有些不同。栈和队列都是申请一段连续的空间,然后按顺序存储数据;链表是一种物理上的非连续、非顺序的存储结构,数据元素之间的顺序是 阅读全文
摘要:
本文整理来源 《轻松学算法——互联网算法面试宝典》/赵烨 编著 用栈实现队列 由于栈和队列的特殊顺序存储结构,一些面试官会出一些题目,比如用栈实现队列和用队列实现栈。 这样的题目在实际工作中并不具有实际应用意义,完全是为了考察大家的思考能力。 用两个栈实现队列 一般会用两个栈来实现队列。首先,我们将 阅读全文
摘要:
本文整理来源 《轻松学算法——互联网算法面试宝典》/赵烨 编著 队列 什么是队列 什么是队列?队列就是一个队伍。队列和栈一样,由一段连续的存储空间组成,是一个具有自身特殊规则的数据结构。栈是后进先出的规则,队列刚好相反,是一个先进先出(FIFO,First In First Out)或者说是后进后出 阅读全文
摘要:
本文整理来源 《轻松学算法——互联网算法面试宝典》/赵烨 编著 栈 什么是栈 栈是有着特殊规则的数据结构,栈有着重要的一个特点——后进先出(LIFO, Last In First Out),也可以叫做先进后出(FILO, First In Last Out),我们无论如何只能够从一端去操作元素。 栈 阅读全文
摘要:
本文整理来源 《轻松学算法——互联网算法面试宝典》/赵烨 编著 数组 自我解读 数组是一堆数据按照顺序放入的固定长度空间。 1. 数组的长度固定,所以在声明时需要指定数组长度。如果长度不够用,也没有什么办法,想要继续存放数据,只能重新声明一个数组空间。 2. 数据只能够按顺序访问,虽然开发时可以通过 阅读全文
摘要:
拼写纠正 主要关注查询的拼写校正。例如,用户输入carot时,实际上可能想返回包含词项carrot的文档。Google的报告指出,当用户输入britian spears、britney's spears、brandy spears或者prittany spears时,实际上搜索引擎都会当成是brit 阅读全文