(代码放在最后)
想请教一下各位犇人此题为什么用二维vector会比二维数组快那么多,原理又是什么
vector不是只是一个动态的数组吗,我用固定大小的二维数组为什么还比它慢了呢
下面是用二维数组dp[510][510]运行之后的结果
下面是用二维vector运行之后的结果
我还发现另一个问题,固定大小的二维vector运行也会很慢,运行的快慢和数组的大小也有关系吗
代码放在下面
求犇人不吝赐教
class Solution {
public:
int minDistance(string word1, string word2) {
word1 = ' '+word1;
word2 = ' '+word2;
int len1 = word1.length();
int len2 = word2.length();
int dp[510][510] = {0};
//将上面这一行换成vector<vector<int>> dp(n + 1, vector<int>(m + 1));
//之后速度就变快了很多
for (int i = 1;i <= len1;++i) dp[i][0] = i;
for (int i = 1;i <= len2;++i) dp[0][i] = i;
for (int i = 1;i <= len1;++i)
for (int j = 1;j <= len2; ++j)
{
if(word1[i] == word2[j]) dp[i][j] = dp[i-1][j-1];
else
dp[i][j] = min(min(dp[i-1][j] + 1,dp[i][j-1] + 1),dp[i-1][j-1] + 1);
}
return dp[len1][len2];
}
};