2026/4/12 leetcode 1320

张开发
2026/4/12 21:01:30 15 分钟阅读

分享文章

2026/4/12 leetcode 1320
好 jb 难。不会做。能做到的就是理解清楚这个题目的意思就是 26 个字母我们用两根手指输入单词最小的移动的距离。我以前可能也是需要用两根手指来进行操作现在可以实现所谓的盲打靠的其实是熟能生巧。困难题还是有一些难度呢。记忆化搜索实际上和我们做笔记、写博客、或者就是处理我们遇到过的事件调用我们的记忆差不多。本质上是避免重复计算。重复计算的代价是不可接受的。记忆化数组存的是一个三维数组感觉太变态了到三维了。幸亏有豆包不然怎么写的这么这么细致呢。这里的记忆化数组的定义太操蛋了。三维数组大小是 27初始化是二维数组二维数组的初始化是一维数组二维数组的大小是 27一位数组的大小是单词的长度初始化为 -1 表示没有被处理过。看了一下记忆化搜索其实也不是那么困难也就是 28 行代码这就是所谓的困难题吗感觉也就那样。但是自己写真的可以写出来吗。做不到就是不知道。非常有道理。这题感觉还是非常不错的。非常有意思的一道题。真希望考试的时候遇到这道题我必须毫不犹豫地把这道题秒了。classSolution{public:intminimumDistance(string word){vectorvectorvectorintmem(27,vectorvectorint(27,vectorint(word.size(),-1)));returndfs(word,26,26,0,mem);}private:intdist(inta,intb){if(a26||b26){return0;}intx1a/6,y1a%6;intx2b/6,y2b%6;returnabs(x1-x2)abs(y1-y2);}intdfs(stringword,intleft,intright,intidx,vectorvectorvectorintmem){if(idxword.size()){return0;}if(mem[left][right][idx]!-1){returnmem[left][right][idx];}intcurword[idx]-A;intop1dist(left,cur)dfs(word,cur,right,idx1,mem);intop2dist(right,cur)dfs(word,left,cur,idx1,mem);returnmem[left][right][idx]min(op1,op2);}};

更多文章