File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1- 学习笔记
1+ # 哈希表、映射、集合的实现与特性
2+ ## Hash table
3+ * 定义
4+ * 哈希表也叫散列表,是根据关键码值(key value)而直接进行访问的数据结构。
5+ * 通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数(Hash Function),存放记录的数组叫哈希表(或散列表)
6+ * 哈希碰撞(Hash Collisions)
7+ * 对于不同的要存储的数据,经过哈希函数之后得到一个相同的值,这就是哈希碰撞
8+ * 解决方法:拉链式解决冲突法
9+ * 工程实践
10+ * 缓存(LRU Cache)
11+ * 键值对存储(Redis)
Original file line number Diff line number Diff line change 1+ /**
2+ * 暴力法
3+ * @param {number[] } nums
4+ * @param {number } target
5+ * @return {number[] }
6+ */
7+ var twoSum = function ( nums , target ) {
8+ for ( var i = 0 ; i < nums . length - 1 ; i ++ ) {
9+ for ( var j = i + 1 ; j < nums . length ; j ++ ) {
10+ if ( nums [ i ] + nums [ j ] === target ) {
11+ return [ i , j ]
12+ }
13+ }
14+ }
15+ } ;
16+
17+ /**
18+ * 两遍哈希
19+ * @param {number[] } nums
20+ * @param {number } target
21+ * @return {number[] }
22+ */
23+ var twoSum = function ( nums , target ) {
24+ var hashmap = { } ;
25+ for ( var i = 0 ; i < nums . length ; i ++ ) {
26+ if ( hashmap [ nums [ i ] ] === void 0 ) {
27+ hashmap [ nums [ i ] ] = i ;
28+ }
29+ }
30+ for ( var j = 0 ; j < nums . length ; j ++ ) {
31+ var _num = target - nums [ j ] ;
32+ if ( hashmap [ _num ] !== void 0 && hashmap [ _num ] !== j ) {
33+ return [ j , hashmap [ _num ] ]
34+ }
35+ }
36+ } ;
37+
38+ /**
39+ * 一遍哈希
40+ * @param {number[] } nums
41+ * @param {number } target
42+ * @return {number[] }
43+ */
44+ var twoSum = function ( nums , target ) {
45+ let _map = new Map ( ) ;
46+ for ( var i = 0 ; i < nums . length ; i ++ ) {
47+ if ( ! _map . has ( nums [ i ] ) ) {
48+ _map . set ( nums [ i ] , i ) ;
49+ }
50+ var _num = target - nums [ i ] ;
51+ if ( _map . has ( _num ) && _map . get ( _num ) !== i ) {
52+ return [ _map . get ( _num ) , i ]
53+ }
54+ }
55+ } ;
You can’t perform that action at this time.
0 commit comments