Skip to content

Commit 8cf0642

Browse files
committed
Time: 18 ms (72.04%), Space: 6.4 MB (93.89%) - LeetHub
1 parent 2c1f3b7 commit 8cf0642

File tree

1 file changed

+8
-23
lines changed

1 file changed

+8
-23
lines changed
Lines changed: 8 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,27 @@
11
class Solution {
22
public:
33

4-
int helper(int i, int j, string& word1, string& word2, vector<vector<int>>& dp)
5-
{
6-
7-
if(i < 0)
8-
return j+1;
9-
if(j < 0)
10-
return i+1;
11-
12-
if(dp[i][j] != -1)
13-
return dp[i][j];
14-
15-
if(word1[i] == word2[j])
16-
return dp[i][j] = helper(i-1,j-1,word1,word2, dp);
17-
return dp[i][j] = 1 + min({helper(i-1,j-1,word1,word2, dp ) , helper(i,j-1,word1,word2,dp), helper(i-1,j,word1,word2,dp)});
18-
}
19-
4+
205
int minDistance(string word1, string word2) {
216

227
int n = word1.size(), m = word2.size();
23-
vector<vector<int>> dp(n+1,vector<int>(m+1,0));
8+
vector<int> prev(m+1,0), curr(m+1,0);
249

2510
for(int j = 0; j<=m; ++j)
26-
dp[0][j] = j;
27-
for(int i = 0; i<=n; ++i)
28-
dp[i][0] = i;
11+
prev[j] = j;
2912

3013
for(int i = 1; i<=n; ++i)
3114
{
15+
curr[0] = i;
3216
for(int j = 1; j<=m; ++j)
3317
{
3418
if(word1[i-1] == word2[j-1])
35-
dp[i][j] = dp[i-1][j-1];
19+
curr[j] = prev[j-1];
3620
else
37-
dp[i][j] = 1 + min({dp[i-1][j-1], dp[i-1][j], dp[i][j-1]});
21+
curr[j] = 1 + min({prev[j-1], prev[j], curr[j-1]});
3822
}
23+
prev = curr;
3924
}
40-
return dp[n][m];
25+
return prev[m];
4126
}
4227
};

0 commit comments

Comments
 (0)