Skip to content

Commit 396d321

Browse files
committed
d
1 parent 3dfbbf3 commit 396d321

9 files changed

Lines changed: 133 additions & 1 deletion

File tree

.DS_Store

0 Bytes
Binary file not shown.

Week03/defTemplate.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
var defFn = function(problem, param1, param2, ...) {
2+
// recursion terminator 递归终止条件
3+
if (problem)
4+
print_result
5+
return
6+
// prespare data 处理当前问题
7+
var data = prespare_data(problem)
8+
var subproblems = split_problem(problem, data)
9+
10+
// conquer subproblems 解决子问题
11+
var subresult1 = defFn(subproblems[0], param1, param2, ...)
12+
var subresult2 = defFn(subproblems[1], param1, param2, ...)
13+
var subresult3 = defFn(subproblems[2], param1, param2, ...)
14+
...
15+
16+
// process and generate the final result 处理最终结果
17+
18+
result = process_result(subresult1,subresult2,subresult3, ...)
19+
}

Week04/.DS_Store

6 KB
Binary file not shown.

Week04/NOTE.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,5 @@
1-
学习笔记
1+
学习笔记
2+
3+
-- Binary Search
4+
取n/2的位置 比较左右数据是否为有序
5+
以左边、右边数据继续查找 直到找到不是有序的数据终止

Week04/findContentChildren.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
2+
/**
3+
* @param {number[]} g
4+
* @param {number[]} s
5+
* @return {number}
6+
*/
7+
var findContentChildren = function(g, s) {
8+
g = g.sort((a, b) => a - b);
9+
s = s.sort((a, b) => a - b);
10+
var maxNum = 0, gIndex = 0, sIndex = 0;
11+
while(gIndex < g.length && sIndex < s.length) {
12+
if (s[sIndex] > g[gIndex]) {
13+
maxNum++;
14+
sIndex++;
15+
gIndex++
16+
} else {
17+
sIndex++
18+
}
19+
}
20+
return maxNum;
21+
}

Week04/findMin.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
/**
2+
* @param {number[]} nums
3+
* @return {number}
4+
*/
5+
var findMin = function(nums) {
6+
var left = 0;
7+
var right = nums.length - 1;
8+
while (left < right) {
9+
var mid = (left + right) >> 1;
10+
if (nums[mid] > nums[right]) {
11+
left = mid + 1;
12+
} else {
13+
right = mid;
14+
}
15+
}
16+
return nums[left];
17+
};

Week04/lemonJuice.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
var lemonadeChange = function(bills) {
2+
var five = 0, ten = 0;
3+
4+
for(let i = 0; i < bills.length; i++) {
5+
if (bills[i] === 5) {
6+
five++;
7+
} else if (bills[i] === 10) {
8+
if ( five === 0) {
9+
five--;
10+
}
11+
ten++;
12+
five--;
13+
} else if (bills[i] === 20) {
14+
if (ten > 0 && five > 0) {
15+
ten--;
16+
five--;
17+
} else if (five > 3) {
18+
five -= 3;
19+
} else {
20+
return false;
21+
}
22+
}
23+
}
24+
25+
return true;
26+
};

Week04/maxProfit.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
// 后一天比前一天大为收益,小则跳过
2+
3+
/**
4+
* @param {number[]} prices
5+
* @return {number}
6+
*/
7+
var maxProfit = function(prices) {
8+
let income = 0;
9+
for (let i = 0; i < prices.length; i++) {
10+
if (prices[i+1] > prices[i]) {
11+
income += prices[i+1] - prices[i];
12+
}
13+
}
14+
return income;
15+
};

Week04/numIslands.js

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
/**
2+
* @param {character[][]} grid
3+
* @return {number}
4+
*/
5+
var numIslands = function(grid) {
6+
if(!grid.length){
7+
return 0;
8+
}
9+
let num = 0;
10+
let row = grid.length;
11+
let col = grid[0].length;
12+
let loop = (x, y) => {
13+
if(grid[x][y] == 1){
14+
grid[x][y] = 0;
15+
x > 0 && loop(x - 1, y);
16+
x < row - 1 && loop(x + 1, y);
17+
y > 0 && loop(x, y - 1);
18+
y < col - 1 && loop(x, y + 1);
19+
}
20+
}
21+
for(let i = 0; i < row; i++){
22+
for(let j = 0; j < col; j++){
23+
if(grid[i][j] == 1){
24+
num++;
25+
loop(i, j);
26+
}
27+
}
28+
}
29+
return num;
30+
}

0 commit comments

Comments
 (0)