diff --git "a/problems/0047.345円205円250円346円216円222円345円210円227円II.md" "b/problems/0047.345円205円250円346円216円222円345円210円227円II.md" index 6999b732dc..afede33a46 100644 --- "a/problems/0047.345円205円250円346円216円222円345円210円227円II.md" +++ "b/problems/0047.345円205円250円346円216円222円345円210円227円II.md" @@ -101,7 +101,7 @@ public: // 时间复杂度: 最差情况所有元素都是唯一的。复杂度和全排列1都是 O(n! * n) 对于 n 个元素一共有 n! 中排列方案。而对于每一个答案,我们需要 O(n) 去复制最终放到 result 数组 // 空间复杂度: O(n) 回溯树的深度取决于我们有多少个元素 ``` -* 时间复杂度: O(n) +* 时间复杂度: O(n! * n) * 空间复杂度: O(n) ## 拓展 diff --git "a/problems/0583.344円270円244円344円270円252円345円255円227円347円254円246円344円270円262円347円232円204円345円210円240円351円231円244円346円223円215円344円275円234円.md" "b/problems/0583.344円270円244円344円270円252円345円255円227円347円254円246円344円270円262円347円232円204円345円210円240円351円231円244円346円223円215円344円275円234円.md" index 054f452bf9..48d15b0ba9 100644 --- "a/problems/0583.344円270円244円344円270円252円345円255円227円347円254円246円344円270円262円347円232円204円345円210円240円351円231円244円346円223円215円344円275円234円.md" +++ "b/problems/0583.344円270円244円344円270円252円345円255円227円347円254円246円344円270円262円347円232円204円345円210円240円351円231円244円346円223円215円344円275円234円.md" @@ -189,6 +189,31 @@ class Solution { } } ``` +```java +//DP - longest common subsequence (用最長公共子序列反推) +class Solution { + public int minDistance(String word1, String word2) { + char[] char1 = word1.toCharArray(); + char[] char2 = word2.toCharArray(); + + int len1 = char1.length; + int len2 = char2.length; + + int dp[][] = new int [len1 + 1][len2 + 1]; + + for(int i = 1; i <= len1; i++){ + for(int j = 1; j <= len2; j++){ + if(char1[i - 1] == char2[j - 1]) + dp[i][j] = dp[i - 1][j - 1] + 1; + else + dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]); + } + } + + return len1 + len2 - (2 * dp[len1][len2]);//和leetcode 1143只差在這一行。 + } +} +``` Python: