Skip to content

Commit 1f87bde

Browse files
committed
第二周 笔记
1 parent 5615a99 commit 1f87bde

2 files changed

Lines changed: 66 additions & 1 deletion

File tree

Week02/NOTE.md

100644100755
Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,11 @@
1-
学习笔记
1+
# 哈希表、映射、集合的实现与特性
2+
## Hash table
3+
* 定义
4+
* 哈希表也叫散列表,是根据关键码值(key value)而直接进行访问的数据结构。
5+
* 通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数(Hash Function),存放记录的数组叫哈希表(或散列表)
6+
* 哈希碰撞(Hash Collisions)
7+
* 对于不同的要存储的数据,经过哈希函数之后得到一个相同的值,这就是哈希碰撞
8+
* 解决方法:拉链式解决冲突法
9+
* 工程实践
10+
* 缓存(LRU Cache)
11+
* 键值对存储(Redis)

Week02/programming/two-sum.js

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
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+
};

0 commit comments

Comments
 (0)