【发布时间】:2021-11-02 13:06:32
【问题描述】:
Link to problem
InterviewBit解决问题
int Solution::solve(vector<int> &A)
{
vector<int> hgt(A.size(),0);
int ans=0,maxx=0;
for(int i=A.size()-1;i>0;i--)
{
ans=max(ans,hgt[A[i]]+hgt[i]+1);
hgt[A[i]]=max(hgt[i]+1,hgt[A[i]]);
}
return ans;
}
有人可以向我解释上面的代码以及他们所说的方法如下:
- 选择任何节点 u。
- 找到离u最远的节点,称之为x。
- 找到离x最远的节点,称之为q。
- 答案是从 x 到 q 的路径长度。
【问题讨论】:
-
请在问题中提供minimal reproducible example,不要依赖外部链接
-
您的代码似乎不正确,请引用真实的。
-
@CiaPan 我已经编辑了上面的代码。以上代码取自 InterviewBit 的完整解决方案选项卡。这个据说是最快的。
-
您没有指定
A向量包含的内容。并且代码似乎依赖于关于向量内容的特定假设。顺便说一句,它声明了一个它从不使用的变量。
标签: c++ algorithm graph tree graph-algorithm