Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit e6569cd

Browse files
solves Edit distance in java
1 parent ea43fce commit e6569cd

File tree

3 files changed

+101
-0
lines changed

3 files changed

+101
-0
lines changed

‎README.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@
7070
| 69 | [Sqrt(x)](https://leetcode.com/problems/sqrtx) | [![Java](assets/java.png)](src/Sqrtx.java) [![Python](assets/python.png)](python/sqrt.py) | |
7171
| 70 | [Climbing Stairs](https://leetcode.com/problems/climbing-stairs) | [![Java](assets/java.png)](src/ClimbingStairs.java) [![Python](assets/python.png)](python/climbing_stairs.py) | |
7272
| 71 | [Simplify Path](https://leetcode.com/problems/simplify-path) | [![Java](assets/java.png)](src/SimplifyPath.java) | |
73+
| 72 | [Edit Distance](https://leetcode.com/problems/edit-distance) | [![Java](assets/java.png)](src/EditDistance.java) | |
7374
| 73 | [Set Matrix Zeroes](https://leetcode.com/problems/set-matrix-zeroes) | [![Java](assets/java.png)](src/SetMatrixZeroes.java) | |
7475
| 74 | [Search a 2D Matrix](https://leetcode.com/problems/search-a-2d-matrix) | [![Java](assets/java.png)](src/SearchA2DMatrix.java) | |
7576
| 75 | [Sort Colors](https://leetcode.com/problems/sort-colors) | [![Java](assets/java.png)](src/SortColors.java) | |

‎src/EditDistance.java

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
// https://leetcode.com/problems/edit-distance
2+
// T: O(m * n)
3+
// S: O(m * n)
4+
5+
public class EditDistance {
6+
public int minDistance(String word1, String word2) {
7+
if (word1.isEmpty()) return word2.length();
8+
if (word2.isEmpty()) return word1.length();
9+
10+
final int rows = word1.length() + 1, columns = word2.length() + 1;
11+
final int[][] dp = new int[rows][columns];
12+
13+
dp[0][0] = 0;
14+
15+
// first row
16+
for (int column = 1 ; column < columns ; column++) {
17+
dp[0][column] = column;
18+
}
19+
20+
// first column
21+
for (int row = 1 ; row < rows ; row++) {
22+
dp[row][0] = row;
23+
}
24+
25+
// rest of table
26+
for (int row = 1 ; row < rows ; row++) {
27+
for (int column = 1 ; column < columns ; column++) {
28+
if (word1.charAt(row - 1) == word2.charAt(column - 1)) {
29+
dp[row][column] = dp[row - 1][column - 1];
30+
} else {
31+
dp[row][column] = min(dp[row - 1][column - 1], dp[row - 1][column], dp[row][column - 1]) + 1;
32+
}
33+
}
34+
}
35+
36+
return dp[rows - 1][columns - 1];
37+
}
38+
39+
private int min(int a, int b, int c) {
40+
return Math.min(Math.min(a, b), c);
41+
}
42+
}

‎src/RangeSumQuery2DImmutable.java

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
// https://leetcode.com/problems/range-sum-query-2d-immutable
2+
// n: matrix.length
3+
// m: matrix[0].length
4+
5+
6+
class NumMatrix {
7+
8+
final int rows;
9+
final int columns;
10+
final int[][] dp;
11+
12+
// T: O(n * m)
13+
// S: O(n * m)
14+
public NumMatrix(int[][] matrix) {
15+
this.rows = matrix.length;
16+
this.columns = matrix[0].length;
17+
this.dp = new int[rows][columns];
18+
19+
// first row
20+
dp[0][0] = matrix[0][0];
21+
for (int column = 1 ; column < columns ; column++) {
22+
dp[0][column] = dp[0][column - 1] + matrix[0][column];
23+
}
24+
25+
// first column
26+
for (int row = 1 ; row < rows ; row++) {
27+
dp[row][0] = dp[row - 1][0] + matrix[row][0];
28+
}
29+
30+
// rest of the matrix
31+
for (int row = 1 ; row < rows ; row++) {
32+
for (int column = 1 ; column < columns ; column++) {
33+
dp[row][column] = dp[row - 1][column] + dp[row][column - 1] - dp[row - 1][column - 1]
34+
+ matrix[row][column];
35+
}
36+
}
37+
}
38+
39+
// T: O(1)
40+
// S: O(1)
41+
public int sumRegion(int row1, int col1, int row2, int col2) {
42+
int result = this.dp[row2][col2];
43+
if (row1 > 0) {
44+
result -= this.dp[row1 - 1][col2];
45+
}
46+
if (col1 > 0) {
47+
result -= this.dp[row2][col1 - 1];
48+
}
49+
if (row1 > 0 && col1 > 0) {
50+
result += this.dp[row1 - 1][col1 - 1];
51+
}
52+
return result;
53+
}
54+
}
55+
56+
public class RangeSumQuery2DImmutable {
57+
58+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /