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)。
相关推荐
美狐美颜SDK开放平台6 小时前
直播美颜SDK功能开发实录:自然妆感算法、人脸跟踪与AI美颜技术
人工智能·深度学习·算法·美颜sdk·直播美颜sdk·美颜api
缓风浪起7 小时前
【力扣】2011. 执行操作后的变量值
算法·leetcode·职场和发展
gsfl7 小时前
双指针算法
算法·双指针
郝学胜-神的一滴7 小时前
矩阵的奇异值分解(SVD)及其在计算机图形学中的应用
程序人生·线性代数·算法·矩阵·图形渲染
电子_咸鱼12 小时前
LeetCode——Hot 100【电话号码的字母组合】
数据结构·算法·leetcode·链表·职场和发展·贪心算法·深度优先
仰泳的熊猫12 小时前
LeetCode:785. 判断二分图
数据结构·c++·算法·leetcode
rit843249912 小时前
基于MATLAB实现基于距离的离群点检测算法
人工智能·算法·matlab
my rainy days14 小时前
C++:友元
开发语言·c++·算法
haoly198914 小时前
数据结构和算法篇-归并排序的两个视角-迭代和递归
数据结构·算法·归并排序
微笑尅乐14 小时前
中点为根——力扣108.讲有序数组转换为二叉搜索树
算法·leetcode·职场和发展