16 Oct 2016
哈希表又称散列表,是最常用的数据结构之一,也是除了搜索树以外的另一种常用的关联数组的实现,相比于
之前介绍过的红黑树,哈希表的查询效率往往更高,代码实现也更简单,不过由于其元素是无序分散存储的,
因此通常哈希表不支持查找前驱或后继元素,也不支持元素的顺序遍历
哈希表本质上是可随机访问的线性表,通常由数组实现,数组的元素称为桶或者槽,键值对分散的存储在数组
之中,哈希表通过哈希函数实现对关联值的定位
哈希表的关键技术是哈希函数,哈希函数的作用是将键值映射为桶的下标,因为这是一个纯数学运算的过程,
所以哈希表的查询效率很高,平均时间复杂度是常量级的
在最理想的情况下,键值可以直接作为桶...
06 Oct 2016
跳表又叫跳跃链表,它是除了搜索树以外的,另一种用于快速查找元素的数据结构,跳表是一种单向多链表,
它以多层次的链接作为索引,实现对元素的快速查找
跳表的原理和单链表类似,元素按顺序存放,且链接都指向后继结点,不同之处在于跳表结点具有多个链接,
不同层次的链接跨度不同,因此在查找时可以跳过许多元素,避免了低效的逐一比较
表结点
跳表的结点具有多个链接,链接的数目(结点的度)最小为1,因此结点的第一层链接一定会指向结点的直接
后继(不跳过任何结点),第二层链接会跳过度为 1 的结点,第 n 层链接会跳过所有度小于 n 的结点,
以下是表结点的定义
struct Node {
Nod...
22 Sep 2016
Question
Given a collection of distinct numbers, return all possible permutations.
For example,
[1,2,3] have the following permutations:
[
[1,2,3],
[1,3,2],
[2,1,3],
[2,3,1],
[3,1,2],
[3,2,1]
]
其实一直都不怎么会排列组合的算法,今天好好研究了一番,现在做一下记录
Solution
思路:首元素交换+递归
#include ...
02 Jul 2016
Question
Given an array and a value, remove all instances of that value in-place and
return the new length.
Do not allocate extra space for another array, you must do this by modifying
the input array in-place with O(1) extra memory.
The order of elements can be changed. It does...
14 Jun 2016
Question
Implement int sqrt(int x).
Compute and return the square root of x.
x is guaranteed to be a non-negative integer.
Example 1:
Input: 4
Output: 2
Example 2:
Input: 8
Output: 2
Explanation: The square root of 8 is 2.82842..., and since we want to
return ...