博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Rehashing
阅读量:6359 次
发布时间:2019-06-23

本文共 1927 字,大约阅读时间需要 6 分钟。

The size of the hash table is not determinate at the very beginning. If the total size of keys is too large (e.g. size >= capacity / 10), we should double the size of the hash table and rehash every keys. Say you have a hash table looks like below:

size=3, capacity=4

[null, 21, 14, null]       ↓    ↓       9   null       ↓      null

The hash function is:

int hashcode(int key, int capacity) {    return key % capacity;}

here we have three numbers, 9, 14 and 21, where 21 and 9 share the same position as they all have the same hashcode 1 (21 % 4 = 9 % 4 = 1). We store them in the hash table by linked list.

rehashing this hash table, double the capacity, you will get:

size=3, capacity=8

index:   0    1    2    3     4    5    6   7hash : [null, 9, null, null, null, 21, 14, null]

Given the original hash table, return the new hash table after rehashing .

rehash意思是重hash, 即原来的key的数目太高,需要将hash table的大小扩大二倍,然后重新获得key值.

了解概念的题目.

代码如下:

"""Definition of ListNodeclass ListNode(object):    def __init__(self, val, next=None):        self.val = val        self.next = next"""class Solution:    """    @param hashTable: A list of The first node of linked list    @return: A list of The first node of linked list which have twice size    """    def rehashing(self, hashTable):        if not hashTable:            return []        capacity = len(hashTable)*2        rehash = [None]*capacity        #insert on the head of linked list        for i in xrange(len(hashTable)):            cur = hashTable[i]            while cur:                key = cur.val%capacity                if not rehash[key]:                    rehash[key] = ListNode(cur.val)                else:                    tmp = rehash[key]                    while tmp.next:                        tmp = tmp.next                    tmp.next = ListNode(cur.val)                cur = cur.next        return rehash

 

转载于:https://www.cnblogs.com/sherylwang/p/5590242.html

你可能感兴趣的文章
GMQ交易平台满足不同客户群体的多种投资需求
查看>>
大数据开发如何入门你必须知道这些
查看>>
关于js(es5)如何优雅地创建对象
查看>>
阿里云前端周刊 - 第 28 期
查看>>
iOS 主队列同步造成死锁的原因
查看>>
es6 下比较对象是否有修改的简要方法
查看>>
windows安装mysql
查看>>
你还在看《深入理解Java虚拟机》的运行时数据模型吗?
查看>>
RIS,创建 React 应用的新选择
查看>>
线性结构上的动态规划--算法竞赛入门经典笔记
查看>>
面试官:你使用webpack时手写过loader,分离过模块吗?
查看>>
Ubuntu 16.04系统下 对OpenJDK编译好的Hotspot 进行调试
查看>>
00-利用思维导图梳理JavaSE基础知识-持续更新中!
查看>>
java中三种注释及其实际应用的意义
查看>>
【三石jQuery视频教程】01.图片循环展示
查看>>
ngrok
查看>>
ThinkPHP 模板变量输出
查看>>
android系统信息(内存、cpu、sd卡、电量、版本)获取
查看>>
HTML5、WebKit与移动应用开发
查看>>
Eclipse Debug Android Native Application
查看>>