lc
lcr007

class Solution {
public:
int singleNumber(vector<int>& nums) {
int sunm=0,ret=0,x=0;
for(int i=0;i<32;i++)
{
int sum=0;//每次循环 重置sum
//数的每一位进行处理
for(auto& c:nums)
{
sum+=(c>>i)&1;
}
x=sum%3;
ret|=(x<<i);
}
return ret;
}
};
lc1376
树的最大深度dfs
自底向上
++maxPathSum = max(maxPathSum, dfs(y))++
return ++maxPathSum + informTime[x];++
class Solution {
public:
int numOfMinutes(int n, int headID, vector<int>& manager, vector<int>& informTime) {
vector<vector<int>> g(n);
for (int i = 0; i < n; i++) {
if (manager[i] >= 0) {
++g[manager[i]].push_back(i); // 建树++
}
}
auto dfs = [&](this auto&& dfs, int x) -> int {
int maxPathSum = 0;
for (int y : g[x]) { // 遍历 x 的儿子 y(如果没有儿子就不会进入循环)
++maxPathSum = max(maxPathSum, dfs(y));++
}
return ++maxPathSum + informTime[x];++
};
return dfs(headID); // 从根节点 headID 开始递归
}
};