You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LeetCode两个字符串的删除操作:memo数组值含义疑问

问题解答

你的代码逻辑正确,返回结果也符合预期,问题出在你对memo[i][j]的定义理解偏差上:

你认为memo[i][j]表示使word1前i个字符与word2前j个字符相同的最少步数,但实际上你的递归函数里,i和j是当前处理到的字符串索引,memo[i][j]的真实含义是:

处理word1从第i位开始的子串和word2从第j位开始的子串,使其相同所需的最少删除步数

针对输入word1="sea"、word2="eat":

  • memo[0][0]对应的是处理整个word1和整个word2,也就是原题要求的最少步数,所以值为2,这完全正确。
  • 对应两个空字符串的场景是memo[3][3](word1长度为3,word2长度也为3),这个位置的值才是0,符合你对空串的预期。

可以验证几个其他位置的memo值来确认:

  • memo[3][1]:word1已处理完(空串),word2剩下"at",需要删除2个字符,值为2。
  • memo[1][2]:word1剩下"ea",word2剩下"t",最少需要删除3步,值为3。

你的递归逻辑没问题,只是对memo数组的索引含义理解反了,调整定义认知后就完全通顺了。

内容的提问来源于stack exchange,提问作者Rahul A

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 21:07:11