Skip to content

Commit 80b138d

Browse files
author
xutao
committed
提交
1 parent 47e044b commit 80b138d

3 files changed

Lines changed: 109 additions & 1 deletion

File tree

Week04/LemonadeChange.java

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
/**
2+
* 860
3+
*/
4+
class LemonadeChange {
5+
public boolean lemonadeChange(int[] bills) {
6+
int five = 0;
7+
int ten = 0;
8+
if (bills.length == 0) {
9+
return false;
10+
}
11+
for (int i = 0; i < bills.length; i++) {
12+
if (bills[i] == 5) {
13+
five++;
14+
} else if (bills[i] == 10) {
15+
if (five == 0) {
16+
return false;
17+
}
18+
five--;
19+
ten++;
20+
} else {
21+
if (ten > 0 && five > 0) {
22+
ten--;
23+
five--;
24+
} else {
25+
if (five > 2) {
26+
five -= 3;
27+
} else {
28+
return false;
29+
}
30+
}
31+
}
32+
}
33+
return true;
34+
}
35+
}

Week04/NOTE.md

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,33 @@
1-
学习笔记
1+
```java
2+
class Solution {
3+
public int findDisorder(int nums[]) throws Exception {
4+
if (nums.length < 2) {
5+
throw new Exception("error");
6+
}
7+
int left = 0;
8+
int right = nums.length - 1;
9+
int mid = (left + right) / 2;
10+
while (left < right) {
11+
if (nums[mid] == 0 && nums[mid] > nums[mid + 1]) {
12+
return nums[mid];
13+
}
14+
if (nums[mid] == nums.length && nums[mid] < nums[mid - 1]) {
15+
return nums[mid];
16+
}
17+
if (nums[left] < nums[mid]) {
18+
right = mid;
19+
} else {
20+
left = mid;
21+
}
22+
}
23+
throw new Exception("error");
24+
}
25+
}
26+
```
27+
28+
29+
### 总结:
30+
- 1.贪心算法,只适用特定场景,有些切入点有点奇怪,需要自己理解。
31+
- 2.牛顿迭代法还是看不懂数学公式,还是套代码模板把。
32+
- 3.关于BFS和DFS还是需要多联系。
33+
- 4.二分查找有时候有边界值和数组越界的问题,需要在代码里面多注意

Week04/NumberOfIslands.java

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
/**
2+
* @author @sailength on 2020/7/6.
3+
* 200
4+
*/
5+
public class NumberOfIslands {
6+
public int numIslands(char[][] grid) {
7+
8+
if (grid.length == 0 || grid == null) {
9+
return 0;
10+
}
11+
int lengthy = grid.length;
12+
int lengthx = grid[0].length;
13+
14+
int num = 0;
15+
for (int i = 0; i < lengthy; i++) {
16+
for (int j = 0; j < lengthx; j++) {
17+
if (grid[i][j] == '1') {
18+
num++;
19+
dfs(grid, i, j);
20+
}
21+
}
22+
}
23+
return num;
24+
}
25+
26+
private void dfs(char[][] grid, int x, int y) {
27+
if (grid.length == 0 || grid == null) {
28+
return;
29+
}
30+
int lengthy = grid.length;
31+
int lengthx = grid[0].length;
32+
if (x < 0 || y < 0 || x >= lengthx || y >= lengthy || grid[x][y] == '0') {
33+
return;
34+
}
35+
grid[x][y] = '0';
36+
dfs(grid, x - 1, y);
37+
dfs(grid, x + 1, y);
38+
dfs(grid, x, y - 1);
39+
dfs(grid, x, y + 1);
40+
}
41+
}

0 commit comments

Comments
 (0)