由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 为什么oj.leetcode上面的triangle那道题总是超时
相关主题
请教一个leetcode OJ问题请教leetcode上的那道Word Break II,多谢!
SUM3这道题请问大牛们leetcode上的Permutations II
求助:3sum总是运行不过问leetcode上surrounded regions,新的test case出runtime error
请教下3sum为撒超时3sum on LeetCode OJ
我这个按层打印的有什么问题leetcode 关于Partition List
IF语句&&前后换个顺序就超时!!!搞笑啊!!!大牛看看为撒这个sqrt binary search过不了OJ
Merge Interval那道题实现regex(.*+)和wildcard(?*)匹配的题
过不了leetcode Zigzag Level Order Traversalleecode上的divide two integers问题
相关话题的讨论汇总
话题: int话题: triangle话题: min话题: vector话题: curr
进入JobHunting版参与讨论
1 (共1页)
m*****n
发帖数: 2152
1
写了一个程序,但是系统总是用它算160+阶的triangle,然后显示Time Limit
Exceeded。
反复修改了,实在没办法再省时间了,而且还要求内存空间O(n).
请问,有人的程序能通过吗?
这是第一次在上面练习,不知道怎么算通过。
n******d
发帖数: 386
2
确定没有死循环?

【在 m*****n 的大作中提到】
: 写了一个程序,但是系统总是用它算160+阶的triangle,然后显示Time Limit
: Exceeded。
: 反复修改了,实在没办法再省时间了,而且还要求内存空间O(n).
: 请问,有人的程序能通过吗?
: 这是第一次在上面练习,不知道怎么算通过。

m*****n
发帖数: 2152
3
应该没有,现在改了code,有出现runtime error,算了还是先在机器上调试一下吧。
j******i
发帖数: 244
4
设从(0, 0)到(i, j)的最小和为P(i, j)
P(i, j) = min(P(i - 1, j), P(i - 1, j - 1)) + triangle[i][j] (除了边界上的
点)
这样知道上一行的P值,就可以推出下一行的P值,找出最后一行P值的最小值返回即可。
时间O(n^2),空间O(n)
class Solution {
public:
int minimumTotal(vector > &triangle) {
int n = triangle.size();
int * p = new int[n]();
int * q = new int[n]();
for (int i = 0; i < n; ++i) {
p[0] = q[0] + triangle[i][0];
for (int j = 1; j < i + 1; ++j) {
if (j == i)
p[j] = q[j - 1] + triangle[i][j];
else
p[j] = min(q[j -1], q[j]) + triangle[i][j];
}
{int * t = p; p = q; q = t;}
}
int r = INT_MAX;
for (int i = 0; i < n; ++i)
r = min(r, q[i]);
delete[] p, q;
return r;
}
};
S*****J
发帖数: 18
5
int triangle(vector> &triangle)
{
for(int i=triangle.size()-2; i>=0; i--)
{
for(int j=0; j triangle[i][j]+=std::min(triangle[i+1][j], triangle[i+1][j+1]);
}

return triangle.empty()? 0 : triangle[0][0];
}
m*****n
发帖数: 2152
6
3x,受到启发,已经通过了,为了省时间,把你的循环里的不必要的if去掉了。
class Solution {
public:
int minimumTotal(vector > &triangle) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
int depth = triangle.size();
if(!depth) return 0;
else if(depth==1) return triangle[0][0];
vector curr_min(depth, 0), pre_min(depth,0);
pre_min[0] = triangle[0][0];
for(int i=1; i {
curr_min[0] = pre_min[0]+triangle[i][0];
curr_min[i] = pre_min[i-1]+triangle[i][i];
for(int j=1; j ]) + triangle[i][j];
pre_min = curr_min;
}

int min=999999;
for(int i=0; i if(min>curr_min[i]) min = curr_min[i];

return min;
}//minimumTotal
};

可。

【在 j******i 的大作中提到】
: 设从(0, 0)到(i, j)的最小和为P(i, j)
: P(i, j) = min(P(i - 1, j), P(i - 1, j - 1)) + triangle[i][j] (除了边界上的
: 点)
: 这样知道上一行的P值,就可以推出下一行的P值,找出最后一行P值的最小值返回即可。
: 时间O(n^2),空间O(n)
: class Solution {
: public:
: int minimumTotal(vector > &triangle) {
: int n = triangle.size();
: int * p = new int[n]();

1 (共1页)
进入JobHunting版参与讨论
相关主题
leecode上的divide two integers问题我这个按层打印的有什么问题
求DEBUG Substring with Concatenation of All WordsIF语句&&前后换个顺序就超时!!!搞笑啊!!!
LeetCode 的java large case为什么有时候过,有时候time exceed呢?Merge Interval那道题
leetcode上zigzag converstion那题怎么才能通过large?过不了leetcode Zigzag Level Order Traversal
请教一个leetcode OJ问题请教leetcode上的那道Word Break II,多谢!
SUM3这道题请问大牛们leetcode上的Permutations II
求助:3sum总是运行不过问leetcode上surrounded regions,新的test case出runtime error
请教下3sum为撒超时3sum on LeetCode OJ
相关话题的讨论汇总
话题: int话题: triangle话题: min话题: vector话题: curr