Codelet Keep code simple stupid

哈希表

哈希表又称散列表,是最常用的数据结构之一,也是除了搜索树以外的另一种常用的关联数组的实现,相比于 之前介绍过的红黑树,哈希表的查询效率往往更高,代码实现也更简单,不过由于其元素是无序分散存储的, 因此通常哈希表不支持查找前驱或后继元素,也不支持元素的顺序遍历 哈希表本质上是可随机访问的线性表,通常由数组实现,数组的元素称为桶或者槽,键值对分散的存储在数组 之中,哈希表通过哈希函数实现对关联值的定位 哈希表的关键技术是哈希函数,哈希函数的作用是将键值映射为桶的下标,因为这是一个纯数学运算的过程, 所以哈希表的查询效率很高,平均时间复杂度是常量级的 在最理想的情况下,键值可以直接作为桶...

跳表

跳表又叫跳跃链表,它是除了搜索树以外的,另一种用于快速查找元素的数据结构,跳表是一种单向多链表, 它以多层次的链接作为索引,实现对元素的快速查找 跳表的原理和单链表类似,元素按顺序存放,且链接都指向后继结点,不同之处在于跳表结点具有多个链接, 不同层次的链接跨度不同,因此在查找时可以跳过许多元素,避免了低效的逐一比较 表结点 跳表的结点具有多个链接,链接的数目(结点的度)最小为1,因此结点的第一层链接一定会指向结点的直接 后继(不跳过任何结点),第二层链接会跳过度为 1 的结点,第 n 层链接会跳过所有度小于 n 的结点, 以下是表结点的定义 struct Node { Nod...

Permutations

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 ...

Remove Element

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...

Sqrt(x)

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 ...