如何追踪低效程序的根本原因——一次刷题引发的性能焦虑探究?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2122个文字,预计阅读时间需要9分钟。
问题来源:在一次在Leetcode上遇到的一道DP题,题目编号723。一般DP题的状态转移过程需要从多个候选中选出最小值,我下面用代码实现了状态转移过程:
pythonfor i in range(size1-1, -1, -1):
问题来由一次在Leetcode上遇到一道DP题,题号72。一般DP题的状态转移方程需要从多个候选中选出最小值,我用下面的代码实现了状态转移方程:
**第一种**
for (int i = size1-1; i >= 0; i--) {
for (int j = size2-1; j >= 0; j--) {
if (word1[i] == word2[j]) {
min = ops[i+1][j+1];
} else {
min = 1 + ops[i+1][j+1];
}
if (min > 1 + ops[i+1][j]) {
min = 1 + ops[i+1][j];
}
if (min > 1 + ops[i][j+1]) {
min = 1 + ops[i][j+1];
}
ops[i][j] = min;
}
}
但这种写法用时80ms,只击败了不到6%的提交。
本文共计2122个文字,预计阅读时间需要9分钟。
问题来源:在一次在Leetcode上遇到的一道DP题,题目编号723。一般DP题的状态转移过程需要从多个候选中选出最小值,我下面用代码实现了状态转移过程:
pythonfor i in range(size1-1, -1, -1):
问题来由一次在Leetcode上遇到一道DP题,题号72。一般DP题的状态转移方程需要从多个候选中选出最小值,我用下面的代码实现了状态转移方程:
**第一种**
for (int i = size1-1; i >= 0; i--) {
for (int j = size2-1; j >= 0; j--) {
if (word1[i] == word2[j]) {
min = ops[i+1][j+1];
} else {
min = 1 + ops[i+1][j+1];
}
if (min > 1 + ops[i+1][j]) {
min = 1 + ops[i+1][j];
}
if (min > 1 + ops[i][j+1]) {
min = 1 + ops[i][j+1];
}
ops[i][j] = min;
}
}
但这种写法用时80ms,只击败了不到6%的提交。

