求解
代码如下: 问题, vector<int> father=vector<int>(n,0);不报错,而使用vector<int> father(n,0);报错未定义的n?为什么?
class Solution {
private:
int n=200005;
vector<int> father=vector<int>(n,0);
// vector<int> father(n,0);
void init(){
for(int i=0;i<n;i++){
father[i]=i;
}
}
int find(int u){
return u==father[u]?u:find(father[u]);
}
bool isSame(int u,int v){
u=find(u);
v=find(v);
return u==v;
}
void join(int u,int v){
u=find(u);
v=find(v);
if(u==v) return;
father[v]=u;
}
public:
bool validPath(int nn, vector<vector<int>>& edges, int source, int destination) {
init();
for(int i=0;i<edges.size();i++){
join(edges[i][0],edges[i][1]);
}
return isSame(source,destination);
}
};
class Solution {
private:
int n=200005;
vector<int> father=vector<int>(n,0);
// vector<int> father(n,0);
void init(){
for(int i=0;i<n;i++){
father[i]=i;
}
}
int find(int u){
return u==father[u]?u:find(father[u]);
}
bool isSame(int u,int v){
u=find(u);
v=find(v);
return u==v;
}
void join(int u,int v){
u=find(u);
v=find(v);
if(u==v) return;
father[v]=u;
}
public:
bool validPath(int nn, vector<vector<int>>& edges, int source, int destination) {
init();
for(int i=0;i<edges.size();i++){
join(edges[i][0],edges[i][1]);
}
return isSame(source,destination);
}
};
全部评论
相关推荐
12-19 19:32
上海理工大学 产品经理 点赞 评论 收藏
分享
点赞 评论 收藏
分享
破防了的哈里很讲原则:咱们两的情况差不太多,我是大一寒假开始学的java,大二下的时候技术栈也学得差不多了,按道理讲应该去找实习了,但我害怕面试,害怕在面试官前出糗,所以不断得麻痹自己,告诉自己八股还没背熟,项目还没理解,所以投不了。然后又染上了酸角洲,沉迷其中,直到最近才开始投。 点赞 评论 收藏
分享