Lintcode - Hash fucntion
来源:互联网 发布:h3c清除mac地址 编辑:程序博客网 时间:2024/04/27 22:42
In data structure Hash, hash function is used to convert a string(or any other type) into an integer smaller than hash size and bigger or equal to zero. The objective of designing a hash function is to "hash" the key as unreasonable as possible. A good hash function can avoid collision as less as possible. A widely used hash function algorithm is using a magic number 33, consider any string as a 33 based big integer like follow:
hashcode("abcd") = (ascii(a) * 333 + ascii(b) * 332 + ascii(c) *33 + ascii(d)) % HASH_SIZE
= (97* 333 + 98 * 332 + 99 * 33 +100) % HASH_SIZE
= 3595978 % HASH_SIZE
here HASH_SIZE is the capacity of the hash table (you can assume a hash table is like an array with index 0 ~ HASH_SIZE-1).
Given a string as a key and the size of hash table, return the hash value of this key.f
For key="abcd" and size=100, return 78
For this problem, you are not necessary to design your own hash algorithm or consider any collision issue, you just need to implement the algorithm as described.
1. every time an element is added, its result need to be mod
2. how do we calculate a*33%HASH_SIZE? := (a%HASH_SIZE)*33, but it overflow also. We could use a (temp=a-HASH_SIZE) and add it to the result if (result+a-HASH_SIZE)>0; otherwise, just use result + a. In this case, we are either adding or removing HASH_SIZE from the final result so it won't overflow.
public int hashCode(char[] key,int HASH_SIZE) { int result = 0; for (int i = 0; i < key.length; i++) { result = helper(result, 33, HASH_SIZE); result += key[i]; result %= HASH_SIZE; } return result; } int helper(int num, int base, int mod) { int result = 0; int temp = num - mod; for (int i = 0; i < base; i++) { if (result + temp > 0) { result += temp; } else { result += num; } } return result; }
- Lintcode - Hash fucntion
- (fucntion(){})()
- sm3维护视图的fucntion code 删除
- LintCode 解题记录 17.5.19 (tag: Hash表2)
- LintCode
- lintcode--
- lintcode
- LintCode
- Lintcode
- hash
- Hash
- hash
- hash
- Hash
- hash
- Hash
- HASH
- hash
- Spring学习 6
- mysql 获取某字段不重复数据,删除某字段重复数据
- Github开源Android资源整理(十一)优秀项目
- Android应用程序绑定服务(bindService)的过程
- 反射
- Lintcode - Hash fucntion
- Github开源Android资源整理(十二)开发工具及测试工具
- ostringstream的用法
- 约翰霍普金斯大学数据科学系列课程——导论
- Lua 编程技巧
- J2ee获取通过Nginx代理的客户端真实IP地址
- C++高效编程忠告
- CapTipper
- 分支-18. 求一元二次方程的根(20)