Leetcode:
leetcode C++ 超出时间限制
简单搜索了一下,大概就是C++比Java运行花费的时间要更多,同样的程序,C++也慢很多
虽然有一些方法可以适当减少C++的运行时间,如 i++ 改成 ++i,值传递改为引用传递等等,但改变并不大。
但有的时候时间超出限制 也可能是循环的问题, 可能进入死循环了
所以要注意循环的终止条件
比如下面的程序
class Solution {
public:
vector> levelOrder(Node* root) {
vector> res;
vector ans;
queue que;
Node *p=root;
if(root==NULL)
return res;
int len;
que.push(p);
while(p!=NULL){
len=que.size();
for(int i=0;ival);
for(int j=0;jchildren.size();j++)
que.push(p->children[j]);
}
res.push_back(ans);
ans.clear();
}
return res;
}
};
这里面循环的终止条件就是死循环,可改为下面的:
class Solution {
public:
vector> levelOrder(Node* root) {
vector> res;
vector ans;
queue que;
Node *p=root;
if(root==NULL)
return res;
int len;
que.push(p);
while(p!=NULL && !que.empty()){
len=que.size();
for(int i=0;ival);
for(int j=0;jchildren.size();j++)
que.push(p->children[j]);
}
res.push_back(ans);
ans.clear();
}
return res;
}
};
这样就可以成功运行了。



