
if (tmp>mx1) {
mx2=mx1;
mx1=tmp;
}
else if (tmp>mx2) {
mx2=tmp;
}
- 注意:传递引用较快,传值较慢
- 也可将其放入成员变量中,较快
class Solution {
int ans = 0;
vector<int> cd[100000];
string S;
public:
int dfs(int root)
{
int max_1 = 0;
int max_2 = 0;
for(int i:cd[root])
{
int b = dfs(i);
if(S[i] ==S[root]) continue;
if(b > max_1)
{
max_2 = max_1;
max_1 = b;
}
else if(b > max_2)
{
max_2 = b;
}
}
ans = max(ans,max_1 + max_2 + 1);
return max(max_1 + 1,max_2 + 1);
}
int longestPath(vector<int>& parent, string s) {
int root;
for(int i = 0;i<parent.size();i++)
{
if(parent[i] == -1) root = i;
else cd[parent[i]].push_back(i);
}
S = s;
dfs(root);
return ans;
}
};