Redian新闻
>
求教各位刷题高手,EDIT DISTANCE白板半个小时你能做的出吗?
avatar
求教各位刷题高手,EDIT DISTANCE白板半个小时你能做的出吗?# JobHunting - 待字闺中
b*s
1
不是SDE职位,假如之前没刷过,第一次碰到这种题。如果是变种呢,有信心没?
avatar
s*e
2
我实话实说,第一次的时候10分钟,
beats 100%的solution,
那题的官解很傻逼,属于想太多的解法。
avatar
b*s
3
可否贴下你的SOLUTION?比如说INPUT是两个同样维度的LIST,每个LIST的ITEM都是存
的是数字,求ED
结果。
avatar
s*e
4
https://leetcode.com/problems/one-edit-distance/
是不是这题?

【在 b********s 的大作中提到】
: 可否贴下你的SOLUTION?比如说INPUT是两个同样维度的LIST,每个LIST的ITEM都是存
: 的是数字,求ED
: 结果。

avatar
b*s
6
72. Edit Distance


: 这个太简单了 我以为是算两个string的edit distance



【在 A******g 的大作中提到】
: 这个太简单了 我以为是算两个string的edit distance
avatar
n*g
7
看了几分钟。应该可以。很久没刷题。比不上年轻人了。

【在 b********s 的大作中提到】
: 72. Edit Distance
:
:
: 这个太简单了 我以为是算两个string的edit distance
:

avatar
s*e
8
刚才试了一下,第一次面试遇到的话,
过程如下:
#1, 10分钟之内写完这个,超时
int min = Math.Max(word1.Length, word2.Length);
for(int i = 0; i < word1.Length; i++)
{
for(int j = 0; j < word2.Length; j++)
{
if(word1[i] == word2[j])
{
int left = MinDistance(word1left, word2left);
int right = MinDistance(word1right, word2right);
min = Math.Min(min, left + right);
}
}
}
#2 琢磨了一下,觉得应该是记忆化,30分钟左右写完。
Dictionary dp;
public int MinDistance(string word1, string word2) {
if(dict.ContainsKey(key)) return dict[key];
int min = Math.Max(word1.Length, word2.Length);
for(int i = 0; i < word1.Length; i++)
{
for(int j = 0; j < word2.Length; j++)
{
if(word1[i] == word2[j])
{
int left = MinDistance(word1left, word2left);
int right = MinDistance(word1right, word2right);
min = Math.Min(min, left + right);
}
}
}
dict.Add(key, min);
return min;
}
#3
写完之后感觉应该用dp,看了官解果然是dp,
然后自己写了一遍dp,第一遍漏了初始化边界。。。。
int n = word1.Length;
int m = word2.Length;
int[,] dp = new int[n + 1, m + 1];
//第一遍忘了下面2行,尼玛。。。
for(int i = 0; i < n; i++) dp[i + 1, 0] = i+1;
for(int i = 0; i < m; i++) dp[0, i + 1] = i+1;
for(int i = 0; i < n; i++)
{
for(int j = 0; j < m; j++)
{
dp[i+1, j+1] = Math.Min(dp[i, j+1], dp[i+1, j]) + 1;
dp[i+1, j+1] = Math.Min(dp[i+1, j+1], dp[i, j] + (word1[i] =
= word2[j] ? 0 : 1));
}
}
return dp[n, m];
感觉题目不难,dp里面算中等吧,但是就是没想到。
鄙视自己还是大婶,不是大神。

【在 b********s 的大作中提到】
: 72. Edit Distance
:
:
: 这个太简单了 我以为是算两个string的edit distance
:

avatar
y*u
9
5min bug free吧,这个是有意防水,要珍惜机会啊
avatar
s*e
10
我去,第一次做就能那么牛逼?
看来我要继续努力了。

【在 y**********u 的大作中提到】
: 5min bug free吧,这个是有意防水,要珍惜机会啊
avatar
l*r
11
凡事求maximum, minimum,optimum的问题,一般都用DP。
对DP来说,只要找到state transfer equation,问题就解决了。
state transfer equation 首先要找到state, 对这个问题来讲就是两个string的长度
l1,l2
还有action,
action作用于state,然后state的变化。
还有就是value function是state 的函数。
有些DP很难,比如merge stone和pop balloon。首先state 就难找。
这些和reinforcement learning里面的markov decision process很像。

【在 b********s 的大作中提到】
: 72. Edit Distance
:
:
: 这个太简单了 我以为是算两个string的edit distance
:

avatar
u*d
12
N年前linkedIn 面试被问到这题,当时没刷过,当场一脸懵逼。
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。