129.Rehashing-重哈希(中等题)
来源:互联网 发布:linux grub引导win7 编辑:程序博客网 时间:2024/05/18 20:05
重哈希
题目
哈希表容量的大小在一开始是不确定的。如果哈希表存储的元素太多(如超过容量的十分之一),我们应该将哈希表容量扩大一倍,并将所有的哈希值重新安排。假设你有如下一哈希表:
size=3, capacity=4
哈希函数为:int hashcode(int key, int capacity) {return key % capacity;}
这里有三个数字9,14,21,其中21和9共享同一个位置因为它们有相同的哈希值1(21 % 4 = 9 % 4 = 1)。我们将它们存储在同一个链表中。
重建哈希表,将容量扩大一倍,我们将会得到:size=3, capacity=8
给定一个哈希表,返回重哈希后的哈希表。注意事项
哈希表中负整数的下标位置可以通过下列方式计算:
C++/Java:如果你直接计算-4 % 3,你会得到-1,你可以应用函数:a % b = (a % b + b) % b得到一个非负整数。
Python:你可以直接用-1 % 3,你可以自动得到2。样例
给出 [null, 21->9->null, 14->null, null]
返回 [null, 9->null, null, null, null, 21->null, 14->null, null]题解
/** * Definition for ListNode * public class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */public 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 */ public ListNode[] rehashing(ListNode[] hashTable) { ListNode[] reHashTable = new ListNode[hashTable.length * 2]; for (int i=0;i<hashTable.length;i++) { if (hashTable[i] != null) { ListNode node = hashTable[i]; while (node != null) { int hc = (node.val % reHashTable.length + reHashTable.length) % reHashTable.length; if (reHashTable[hc] == null) { reHashTable[hc] = new ListNode(node.val); } else { ListNode dummy = reHashTable[hc]; while (dummy.next != null) { dummy = dummy.next; } dummy.next = new ListNode(node.val); } node = node.next; } } } return reHashTable; }};
Last Update 2016.10.13
0 0
- 129.Rehashing-重哈希(中等题)
- Rehashing
- Rehashing
- [刷题]Rehashing
- #129 Rehashing
- 3.Digit Counts-统计数字(中等题)
- 15.Permutations-全排列(中等题)
- 17.Subsets-子集(中等题)
- 92.Backpack-背包问题(中等题)
- 130.Heapify-堆化(中等题)
- 152.Combinations-组合(中等题)
- 187.Gas Station-加油站(中等题)
- CodeForces 7B Memory Manager(中等难度模拟题)
- 4.Ugly Number II-丑数 II(中等题)
- 31.Partition Array-数组划分(中等题)
- 387.The Smallest Difference-最小差(中等题)
- 411.Gray Code-格雷编码(中等题)
- 501.Mini Twitter-迷你推特(中等题)
- word2vec 中的数学原理详解(三)背景知识
- node-debug 三法三例之node debugger + node inspector
- c#在output窗口输出调试信息
- 卓易科技与竹间智能科技将开启战略合作
- UITextField长度输入限制
- 129.Rehashing-重哈希(中等题)
- 负载均衡的原理
- SHUOJ 1611 矩阵连乘问题(dp)
- UITextField数字输入限制
- block,inline和inline-block概念和区别
- Android 四大大图片缓存(Imageloader,Picasso,Glide,Fresco)原理、特性对比
- Android---open failed: ENOENT (No such file or directory) 错误
- [android]WIFI热点启动流程分析
- Log4j配置详解