一、redis数据结构之无序集合(set) redis的集合不是一个线性结构,而是一个哈希表结构,它的内部会根据哈希分子来存储和查找数据,理论上一个集合可以存储2的32次方-1(大约42亿)个元素,因为采用哈希表结构,所以对于redis集合的插入、删除和查找的复杂度都是O(1)。此外需要注意如下三点 ...
分类:
其他好文 时间:
2020-06-06 17:07:16
阅读次数:
81
本题要求是给出一个无序数组,在数组种找出最长的连续序列,时间复杂度是O(n)。这道题并不难,主要是接触了一个新的数据结构,用哈希表实现的set,查找和插入可以在几乎O(1)的时间完成。遍历整个数组,如果在set种找到比当前数字小1的就跳过(该数不可能是连续序列中最小的数),如果没有找到,就从这个数开 ...
分类:
其他好文 时间:
2020-06-06 13:14:56
阅读次数:
50
哈希表+除法(违规) 思路 第一次遍历用哈希表记录数组出现 0的下标 ,同时计算非零元素的乘积。 第二次遍历数组,对数组元素为0的个数进行分类讨论,详细见代码 最致命的地方是 用到了除法 代码 /* *2ms O(n) */ public int[] productExceptSelf2(int[] ...
分类:
编程语言 时间:
2020-06-06 13:01:36
阅读次数:
55
这里简单学习一下STL关联容器,主要是map、multimap、set、multiset以及unordered_map。前四个底层实现都是利用红黑树实现的,查找算法时间复杂度为$O(log(n))$,而unordered_map从名字上就知道是无序容器,其实现原理类似哈希表,查找算法时间复杂度$O( ...
分类:
其他好文 时间:
2020-06-06 11:23:47
阅读次数:
69
1、map.put(k,v)实现原理 第一步首先将k,v封装到Node对象当中(节点)。第二步它的底层会调用K的hashCode()方法得出hash值。第三步通过哈希表函数/哈希算法,将hash值转换成数组的下标,下标位置上如果没有任何元素,就把Node添加到这个位置上。如果说下标对应的位置上有链表 ...
分类:
其他好文 时间:
2020-06-06 00:37:07
阅读次数:
71
哈希表 什么是哈希表 首先,哈希表是一种数据结构,它通过某种映射函数$index=f(keyValue)$将keyValue映射为某个可以直接访问的位置(索引),从而能加快在该数据结构中查询keyValue的速度。因此一个哈希表通常由数组+链表的结构组合而成,通过数组的索引能快速访问到keyValu ...
分类:
其他好文 时间:
2020-06-04 21:30:10
阅读次数:
64
一、将哈希表 key 中的字段 field 的值设为 value 命令:hset 格式:hset key field value 127.0.0.1:6379> hset hash_key key1 v1 (integer) 1 127.0.0.1:6379> hset hash_key key2 ...
分类:
其他好文 时间:
2020-06-01 14:15:35
阅读次数:
58
前言 这是一篇新的字符串 hash 介绍文章,5 年前的那篇其实也讲的差不多了,但也有许多问题,而且也不知道当时为什么前前后后提了那么多次暴雪,看起来像是一篇暴雪的软文 = =。 文章虽然归类为字符串部分,但知识是属于 hash 的一部分,所以如果不了解 hash 的概念请参见:7.2 哈希表 (总 ...
分类:
其他好文 时间:
2020-05-30 21:32:07
阅读次数:
60
前言 很久很久以前经常听到哈希这个词,后来多多少少有所接触,但并未系统地了解过哈希到底是怎么回事。 子目录列表 1、哈希表与数组 哈希表(hash table),又称为散列表,是根据关键码值(key)直接进行访问的一种数据结构,也就是说,给定一个 key,则可以通过哈希表的映射关系快速找到其对应的值 ...
分类:
其他好文 时间:
2020-05-30 01:36:00
阅读次数:
105
先上全家照! 四个画着黑框的重点肯定要先看完。下面开始进入对HashSet的分析。 Javadoc: 此类实现Set 接口,并由哈希表(实际上是HashMap实例)支持。它不保证集合的迭代顺序。特别是,它不能保证阶随时间保持不变。此类允许null元素。 此类为基本操作提供了恒定的时间性能(添加,删除 ...
分类:
其他好文 时间:
2020-05-29 19:38:14
阅读次数:
52