Skip to content

Commit 6a4204a

Browse files
committed
third week
1 parent 7cdd969 commit 6a4204a

File tree

6 files changed

+111
-24
lines changed

6 files changed

+111
-24
lines changed

Week_03/id_12/LeetCode_200_012.java

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -27,29 +27,29 @@
2727

2828
class Solution {
2929

30-
int[] x = {1, 0, -1, 0};
31-
int[] y = {0, -1, 0, 1};
30+
int[] x = {1, 0, -1, 0};
31+
int[] y = {0, -1, 0, 1};
3232

33-
public int numIslands(char[][] grid) {
34-
int count = 0;
35-
for (int i = 0; i < grid.length; i++) {
36-
for (int j = 0; j < grid[i].length; j++) {
37-
if (grid[i][j] == '1') {
38-
count++;
39-
sink(grid, i, j);
40-
}
41-
}
42-
}
43-
return count;
44-
}
33+
public int numIslands(char[][] grid) {
34+
int count = 0;
35+
for (int i = 0; i < grid.length; i++) {
36+
for (int j = 0; j < grid[i].length; j++) {
37+
if (grid[i][j] == '1') {
38+
count++;
39+
sink(grid, i, j);
40+
}
41+
}
42+
}
43+
return count;
44+
}
4545

46-
private void sink(char[][] grid, int i, int j) {
47-
if (i < 0 || j < 0 || i > grid.length - 1 || j > grid[i].length - 1 || grid[i][j] == '0') {
48-
return;
49-
}
50-
grid[i][j] = '0';
51-
for (int index = 0; index < 4; index++) {
52-
sink(grid, i + x[index], j + y[index]);
53-
}
54-
}
46+
private void sink(char[][] grid, int i, int j) {
47+
if (i < 0 || j < 0 || i > grid.length - 1 || j > grid[i].length - 1 || grid[i][j] == '0') {
48+
return;
49+
}
50+
grid[i][j] = '0';
51+
for (int index = 0; index < 4; index++) {
52+
sink(grid, i + x[index], j + y[index]);
53+
}
54+
}
5555
}

Week_03/id_12/LeetCode_210_012.java

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
class Solution {
2+
3+
public int[] findOrder(int numCourses, int[][] prerequisites) {
4+
List[] course = new List[numCourses];
5+
int[] map = new int[numCourses];
6+
List<Integer> resultList = new ArrayList<Integer>();
7+
for (int i = 0; i < numCourses; i++) {
8+
course[i] = new ArrayList<Integer>();
9+
}
10+
for (int i = 0; i < prerequisites.length; i++) {
11+
course[prerequisites[i][0]].add(prerequisites[i][1]);
12+
}
13+
for (int i = 0; i < numCourses; i++) {
14+
if (!dfs(course, i, resultList, map)) {
15+
return new int[0];
16+
}
17+
}
18+
int[] an = new int[resultList.size()];
19+
for (int i = 0; i < resultList.size(); i++) {
20+
an[i] = resultList.get(i);
21+
}
22+
return an;
23+
}
24+
25+
private boolean dfs(List[] course, int req, List<Integer> list, int[] map) {
26+
if (map[req] == 0) {
27+
map[req] = 1;
28+
for (int i = 0; i < course[req].size(); i++) {
29+
if (!dfs(course, (int) course[req].get(i), list, map)) {
30+
return false;
31+
}
32+
}
33+
map[req] = 2;
34+
} else if (map[req] == 1) {
35+
return false;
36+
} else if (map[req] == 2) {
37+
return true;
38+
}
39+
list.add(req);
40+
return true;
41+
}
42+
}

Week_03/id_12/LeetCode_295_012.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
class MedianFinder {
2+
3+
PriorityQueue<Integer> min = new PriorityQueue();
4+
PriorityQueue<Integer> max = new PriorityQueue(1000, Collections.reverseOrder());
5+
6+
public void addNum(int num) {
7+
max.offer(num);
8+
min.offer(max.poll());
9+
if (max.size() < min.size()) {
10+
max.offer(min.poll());
11+
}
12+
}
13+
14+
public double findMedian() {
15+
if (max.size() == min.size()) {
16+
return (max.peek() + min.peek()) / 2.0;
17+
} else {
18+
return max.peek();
19+
}
20+
}
21+
};

Week_03/id_12/LeetCode_703_012.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
class KthLargest {
2+
3+
final PriorityQueue<Integer> q;
4+
final int k;
5+
6+
public KthLargest(int k, int[] a) {
7+
this.k = k;
8+
q = new PriorityQueue<>(k);
9+
for (int n : a) {
10+
add(n);
11+
}
12+
}
13+
14+
public int add(int n) {
15+
if (q.size() < k) {
16+
q.offer(n);
17+
} else if (q.peek() < n) {
18+
q.poll();
19+
q.offer(n);
20+
}
21+
return q.peek();
22+
}
23+
}

Week_03/id_12/NOTE.md

Lines changed: 0 additions & 1 deletion
This file was deleted.

Week_03/id_12/学习总结.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# 学习笔记
2+
首先感觉作业题目越来越难了,第200题老师上课讲过了,对小岛沉没这种解法很有印象,也安装老师要求的用两个数组来表示方向,算是一次课堂温习;第210题,刚开始题目没有看清楚,不清楚第一个参数的作业,提醒自己以后审题一定要仔细,感觉这题的数据结构很像Java中的HashMap,可以借鉴着来理解;第295题感觉用优先队列来解决太巧妙了,学到了一招;第703题算是对优先队列的又一次灵活应用。

0 commit comments

Comments
 (0)