LeetCode 解题思路 48(编辑距离、只出现一次的数字)

解题思路:

  1. dp 数组的含义: 以下标 i - 1为结尾的字符串 word1 和以下标 j - 1 为结尾的字符串 word2 的最近编辑距离为 dp[i][j]。
  2. 递推公式:
java 复制代码
if (word1.charAt(i - 1) == word2.charAt(j - 1)) {
    dp[i][j] = dp[i - 1][j - 1];
} else {
    dp[i][j] = Math.min(Math.min(dp[i][j - 1], dp[i - 1][j]), dp[i - 1][j - 1]) + 1;
}
  1. dp 数组初始化: dp[i][0] = i,dp[0][j] = j。
  2. 遍历顺序: 从小到大逐行遍历,确保左边和上边的 dp 数组有值。
  3. 打印 dp 数组

Java代码:

java 复制代码
class Solution {
    public int minDistance(String word1, String word2) {
        int m = word1.length();
        int n = word2.length();
        int[][] dp = new int[m + 1][n + 1];

        for (int i = 1; i <= m; i++) dp[i][0] = i;
        for (int j = 1; j <= n; j++) dp[0][j] = j;

        for (int i = 1; i <= m; i++) {
            for (int j = 1; j <= n; j++) {
                if (word1.charAt(i - 1) == word2.charAt(j - 1)) {
                    dp[i][j] = dp[i - 1][j - 1];
                } else {
                    dp[i][j] = Math.min(Math.min(dp[i][j - 1], dp[i - 1][j]), dp[i - 1][j - 1]) + 1;
                }
            }
        }

        return dp[m][n];
    }
}

复杂度分析:

  • 时间复杂度: O(mn)。
  • 空间复杂度: O(mn)。

解题思路:

  1. 异或运算​:
  • 任何数和 0 异或都是它本身:a ^ 0 = a。
  • 相同的两个数异或结果为 0:a ^ a = 0。
  • 异或运算满足交换律和结合律:a ^ b ^ a = (a ^ a) ^ b = 0 ^ b = b。

Java代码:

java 复制代码
public class Solution {
    public int singleNumber(int[] nums) {
        int result = 0;
        for (int num : nums)
            result ^= num;

        return result;
    }
}

复杂度分析:

  • 时间复杂度: O(n)。
  • 空间复杂度: O(1)。
相关推荐
穿条秋裤到处跑2 分钟前
每日一道leetcode(2026.03.30):判断通过操作能否让字符串相等 II
算法·leetcode
Q741_1473 分钟前
每日一题 力扣 2840. 判断通过操作能否让字符串相等 II 力扣 2839. 判断通过操作能否让字符串相等 I 找规律 字符串 C++ 题解
c++·算法·leetcode·力扣·数组·找规律
xu_wenming8 分钟前
在 TinyML 场景下,如何将模型从 FP32 量化为 INT8?
arm开发·算法·iot
csdn_aspnet11 分钟前
C++ 求n边凸多边形的对角线数量(Find number of diagonals in n sided convex polygon)
开发语言·c++·算法
深邃-22 分钟前
字符函数和字符串函数(1)
c语言·开发语言·数据结构·c++·算法·html5
我真不是小鱼23 分钟前
cpp刷题打卡记录24——路径总和 & 路径总和II
数据结构·c++·算法·leetcode
菜鸟小九29 分钟前
JVM垃圾回收
java·jvm·算法
nianniannnn30 分钟前
力扣 347. 前 K 个高频元素
c++·算法·leetcode
x_xbx32 分钟前
LeetCode:217. 存在重复元素
数据结构·leetcode·哈希算法
漫随流水33 分钟前
c++编程:求阶乘和
数据结构·c++·算法