Skip to content

Commit fd15938

Browse files
authored
Add files via upload
1 parent 56ce32b commit fd15938

File tree

9 files changed

+190
-0
lines changed

9 files changed

+190
-0
lines changed

64/main.cpp

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
class Solution {
2+
public:
3+
int minPathSum(vector<vector<int>>& grid) {
4+
int n = grid.size();
5+
int m = grid[0].size();
6+
7+
// dp grid f
8+
vector<vector<int>> f(n, vector<int>(m, 0));
9+
f[0][0] = grid[0][0];
10+
for (int j = 1; j < m; j++)
11+
f[0][j] = f[0][j - 1] + grid[0][j];
12+
for (int i = 1; i < n; i++)
13+
f[i][0] = f[i - 1][0] + grid[i][0];
14+
15+
// work
16+
// f[i][j] = min cost to reach cell(i,j) from 0,0
17+
for (int i = 1; i < n; i++) {
18+
for (int j = 1; j < m; j++) {
19+
f[i][j] = min(f[i - 1][j], f[i][j - 1]) + grid[i][j];
20+
}
21+
}
22+
23+
return f[n - 1][m - 1];
24+
25+
}
26+
};

64/main.java

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
class Solution {
2+
public int minPathSum(int[][] grid) {
3+
int n = grid.length;
4+
int m = grid[0].length;
5+
6+
int[][] f = new int[n][m];
7+
f[0][0] = grid[0][0];
8+
for (int j = 1; j < m; j++)
9+
f[0][j] = f[0][j - 1] + grid[0][j];
10+
for (int i = 1; i < n; i++)
11+
f[i][0] = f[i - 1][0] + grid[i][0];
12+
13+
for (int i = 1; i < n; i++) {
14+
for (int j = 1; j < m; j++) {
15+
f[i][j] = Math.min(f[i - 1][j], f[i][j - 1]) + grid[i][j];
16+
}
17+
}
18+
19+
return f[n - 1][m - 1];
20+
21+
}
22+
}

64/main.py

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
class Solution:
2+
def minPathSum(self, grid: List[List[int]]) -> int:
3+
n = len(grid)
4+
m = len(grid[0])
5+
f = [[None for _ in range(m)] for _ in range(n)]
6+
7+
f[0][0] = grid[0][0]
8+
for j in range(1, m):
9+
f[0][j] = f[0][j-1] + grid[0][j]
10+
for i in range(1, n):
11+
f[i][0] = f[i - 1][0] + grid[i][0]
12+
13+
for i in range(1, n):
14+
for j in range(1, m):
15+
f[i][j] = min(f[i - 1][j] , f[i][j - 1]) + grid[i][j]
16+
17+
return f[n - 1][m - 1]

746/main.cpp

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
class Solution {
2+
public:
3+
int minCostClimbingStairs(vector<int>& cost) {
4+
int n = cost.size();
5+
vector<int> f(n + 1);
6+
f[0] = 0;
7+
f[1] = 0;
8+
9+
for (int i = 2; i <= n; i++) {
10+
f[i] = min(f[i - 1] + cost[i - 1], f[i - 2] + cost[i - 2]);
11+
}
12+
13+
return f[n];
14+
}
15+
};

746/main.java

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
class Solution {
2+
public int minCostClimbingStairs(int[] cost) {
3+
int n = cost.length;
4+
int f[] = new int[n + 1];
5+
f[0] = 0;
6+
f[1] = 0;
7+
8+
for (int i = 2; i <= n; i++) {
9+
f[i] = Math.min(f[i - 1] + cost[i - 1], f[i - 2] + cost[i - 2]);
10+
}
11+
12+
return f[n];
13+
}
14+
}

746/main.py

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
class Solution:
2+
def minCostClimbingStairs(self, cost: List[int]) -> int:
3+
n = len(cost)
4+
f = [None] * (n + 1)
5+
6+
f[0] = 0
7+
f[1] = 0
8+
9+
for i in range(2, n + 1):
10+
f[i] = min(f[i - 1] + cost[i - 1], f[i - 2] + cost[i - 2])
11+
return f[n]
12+
13+
14+

931/main.cpp

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
class Solution {
2+
public:
3+
int minFallingPathSum(vector<vector<int>>& A) {
4+
int n = A.size();
5+
int m = A[0].size();
6+
7+
vector<vector<int>> f(n, vector<int>(m, 0));
8+
9+
for (int i = 0; i < n; i++) {
10+
for (int j = 0; j < m; j++) {
11+
if (i == 0)
12+
f[i][j] = A[i][j];
13+
else {
14+
int val = f[i - 1][j];
15+
for (int k = j - 1; k <= j + 1; k++)
16+
if (k >= 0 and k < m)
17+
val = min(val, f[i - 1][k]);
18+
19+
f[i][j] = val + A[i][j];
20+
}
21+
}
22+
}
23+
24+
int ans = INT_MAX;
25+
for (int j = 0; j < m; j++)
26+
ans = min(ans, f[n - 1][j]);
27+
28+
return ans;
29+
}
30+
};

931/main.java

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
class Solution {
2+
public int minFallingPathSum(int[][] A) {
3+
int n = A.length;
4+
int m = A[0].length;
5+
6+
// vector<vector<int>> f(n, vector<int>(m, 0));
7+
int[][] f = new int[n][m];
8+
9+
for (int i = 0; i < n; i++) {
10+
for (int j = 0; j < m; j++) {
11+
if (i == 0)
12+
f[i][j] = A[i][j];
13+
else {
14+
int val = f[i - 1][j];
15+
for (int k = j - 1; k <= j + 1; k++)
16+
if (k >= 0 && k < m)
17+
val = Math.min(val, f[i - 1][k]);
18+
19+
f[i][j] = val + A[i][j];
20+
}
21+
}
22+
}
23+
24+
int ans = Integer.MAX_VALUE;
25+
for (int j = 0; j < m; j++)
26+
ans = Math.min(ans, f[n - 1][j]);
27+
28+
return ans;
29+
}
30+
}

931/main.py

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
class Solution:
2+
def minFallingPathSum(self, A: List[List[int]]) -> int:
3+
n = len(A)
4+
m = len(A[0])
5+
6+
f = [[None for _ in range(m)] for _ in range(n)]
7+
8+
for i in range(n):
9+
for j in range(m):
10+
if i == 0:
11+
f[i][j] = A[i][j]
12+
else:
13+
val = f[i-1][j]
14+
for k in [j-1,j,j+1]:
15+
if k >= 0 and k < m:
16+
val = min(val, f[i-1][k])
17+
f[i][j] = val + A[i][j]
18+
19+
ans = float('inf')
20+
for j in range(m):
21+
ans = min(ans, f[n-1][j])
22+
return ans

0 commit comments

Comments
 (0)