队列(Queue)Doc
普通队列 队列的特点就是先进先出,后进后出。可以使用数组、链表实现队列。 队列的操作 插入元素 (add)一般指在队列首部插入元素。 删除元素 (remove)指删除队列末尾的元素。 获取元素 (get)一般是获取队列最前面的元素。 应用场景 二叉树的广度优先搜索 二叉树的广度优先搜索是从上到下按层遍历二叉树,从二叉树的根节点开始,先遍历二叉树的第1层,再遍历第2层,接着遍历第3层,并以此类推。 …
哈希表(Hash Table)Doc
基础概念 哈希表是一种常见的数据结构,也叫散列表。哈希表最大的优点是高效,在哈希表中插入、删除或查找一个元素都只需要 O(1) 的时间。 因此,哈希表经常被用来优化时间效率。除了专门考散列表的题,也经常作为辅助计算的数据结构,很多时候都可以考虑是否需要借助散列表解决。比如用来记录字符串中字母出现的次数、字符串中字符出现的位置等信息。 哈希函数 设计哈希表的前提是待存入的元素需要一个能计算自己哈希值 …
数组(Array)Doc
一维数组 数组常被用来当做栈、堆和队列的容器,除此之外,大多是单纯只涉及数组的题目。 特点: 支持下标 支持切片 有固定长度或可变长度 应用场景 数组结构很简单,但是出的题涉及的算法类型比较多,比如排序、二分法、双指针、滑动窗口,还会有一些是动态规划。 常用技巧 双指针 双指针还有快慢指针和左右指针的区别,这里基本都是左右指针,快慢指针一般会应用在循环链表的数据结构里。 剑指 Offer II 0 …
栈(Stack)Doc
基础知识 栈是一种常用的数据结构,它最大的特点是“后入先出”,即后进入栈中的元素最先出来,为了确保“后入先出”(LIFO)的顺序,栈的插入(push)和删除(pop)操作都发生在栈顶。 如果数据保存的顺序和使用顺序相反,即最后保存的数据最先被使用,有“后入先出”的需要,可以考虑将数据保存到栈中。 数据结构 JavaScript 和 Go 中都没有实现专门的栈接口,可以用数组来模拟。 JavaScr …
字符串(String)Doc
字符串本身的数据结构并不复杂,同数组非常类似,没啥特别需要介绍的,就是题一般都不简单。 做题需要考虑: 有的字符串一定是 26 个字母,有的可能会包含空格。 注意事项 Golang 注意:Go 的 for 循环得到的是 rune 类型的字符,需要进行转换。 go func main() { a := "你好" for i, v := range a { fmt.Println(i, v, a[i] …
二叉树(Binary Tree)Doc
基本概念 父节点,子节点,叶子节点 叶子节点: 一棵树当中没有子结点的结点称为叶子结点。 高度和深度 树的高度:节点到叶子节点的最大值就是其高度。 树的深度:高度和深度是相反的,高度是从下往上数,深度是从上往下。 注意: 一般默认是把根节点的深度设为 1,把子节点的高度设为 1,比如 104. 二叉树的最大深度 。在面试的时候最好要确认一下。 js var maxDepth = function( …
排序Doc
排序是非常基础、重要的算法,它将若干数据依照特定的顺序进行排列。如果排序的对象是数值,那么按数值递增或递减的顺序进行排序;如果排序的对象是字符串,那么按照字典顺序进行排序。由于数据排序之后能够利用二分查找算法提高查找的效率,因此很多数据都是排序之后再存储的。 冒泡排序 每次遍历数组时,两两对比并调整顺序, 遍历完可以得到一个最大的在数组结尾 。 继续下一次遍历,最后得到一个第二大的在倒数第二个位置 …
链表(Linked list)Doc
基本概念 单向链表 JavaScript js function ListNode(val, next) { this.val = (val === undefined ? 0 : val) this.next = (next === undefined ? null : next) } Golang go type ListNode struct { Val int Next *ListNode …
AJAX 是什么?

这个问题既熟悉又有点陌生,先看概念。AJAX 是 Asynchronous Javavascript XML 的缩写,即异步 JavaScript 和 XML。使用 AJAX 技术可以在无需重新加载整个网页的情况下,能够更新部分网页,从而给带来更好的用户体验。另外 AJAX 不仅使用 XML,实际上由于 JSON 结构的易读和轻量反而更受欢迎。 AJAX 不是一种单一的技术,而是利用了一系列相关的 …
浏览器的事件机制R
事件是在编程时系统内发生的动作或者发生的事情,系统响应事件后,如果需要,我们可以用事件处理器(event handler)对事件做出回应。浏览器中常见的可以触发事件的时机比如有: 用户在某个元素上点击鼠标或悬停光标时。 用户在键盘中按下某个按键时。 用户调整浏览器的大小或者关闭浏览器窗口时。 一个网页停止加载时。 提交表单时。 播放、暂停、关闭视频时。 发生错误时。 事件处理程序 事件处理程序(也 …