news 2026/1/12 0:43:20

vector<int> dfs

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
vector<int> dfs

lc3593

自底向上dfs

max dfs

cnt not need change子树

class Solution {
public:
int minIncrease(int n, vector<vector<int>>& edges, vector<int>& cost)

{
vector<vector<int>> g(n);
for (auto& e : edges) {
int x = e[0], y = e[1];
g[x].push_back(y);
g[y].push_back(x);
}
g[0].push_back(-1);

int ans = 0;
auto dfs = [&](this auto&& dfs, int x, int fa) -> long long {
long long max_s = 0;
int cnt = 0;
for (int y : g[x]) {
if (y == fa)
continue;

long long mx = dfs(y, x);
if (mx > max_s) {
max_s = mx;
cnt = 1;
}else if (mx == max_s)
cnt++;
}
ans += g[x].size() - 1 - cnt;//子树-fa-not need change

return max_s + cost[x];
};
dfs(0, -1);
return ans;
}
};

lc1519

vector<int> dfs

class Solution {
public:
vector<int> countSubTrees(int n, vector<vector<int>>& edges, string labels) {
vector<int> res(n, 0);
vector<vector<int>> g(n);
for(auto& e : edges) {
g[e[0]].push_back(e[1]);
g[e[1]].push_back(e[0]);
}
auto dfs = [&](this auto&& dfs,int u, int p)-> vector<int>
{
vector<int> cnt(26, 0);//cur
cnt[labels[u] - 'a']++;

for(int v : g[u]) {
if(v == p) continue;
vector<int> c = dfs(v, u);


for(int i = 0; i < 26; i++)
cnt[i] += c[i];
//拿到的每个v 都加给cur
}
res[u] = cnt[labels[u] - 'a'];
//统计完v后 存入ret

return cnt;
};
dfs(0, -1);// cur,fa
return res;
}
};

lc3254

统计连续上升的元素长度,用一次遍历判断每个长度为k的子数组是否连续上升 借助cnt变量

满足则记录末尾元素为能量值,否则保持-1

class Solution {
public:
vector<int> resultsArray(vector<int>& nums, int k) {
vector<int> ans(nums.size() - k + 1, -1);
int cnt = 0;
for (int i = 0; i < nums.size(); i++) {
cnt = i == 0 || nums[i] == nums[i - 1] + 1 ? cnt + 1 : 1;
if (cnt >= k)
ans[i - k + 1] = nums[i];
}
return ans;
}
};

lc957

模拟+周期+hash

模拟每天牢房状态变化+检测循环周期

高效计算出 n 天后的牢房状态,避免了大数 n 的重复模拟

class Solution {
public:
vector<int> prisonAfterNDays(vector<int>& cells, int n) {
unordered_map<int, vector<int>> map; //key:第i天 value:cells状态
map.insert({0, cells});


for (int i = 1; i <= n; i++) {
if (i == 1) {
cells[0] = 0;
cells[7] = 0;
}
for (int j = 1; j < 7; j++) {
if (map[i - 1][j - 1] == 0 && map[i - 1][j + 1] == 0) cells[j] = 1;
else if (map[i - 1][j - 1] == 1 && map[i - 1][j + 1] == 1) cells[j] = 1;
else cells[j] = 0;
}
map.insert({i, cells});
bool flag = true;// 判循环


for (int j = 0; j < 8; j++)
if (cells[j] != map[1][j]) flag = false;

if (i > 1 && flag) {
if (n % (i - 1) == 0) return map[i - 1]; //能整除则返回上一天的状态(余数为0)
else return map[n % (i - 1)];

//不能整除时返回第 n % (i - 1) 的状态
}
}
return cells;

//没出现循环直接返回模拟的结果
}
};

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/31 23:24:49

PyTorch DataLoader多线程加载数据:提升GPU利用率

PyTorch DataLoader多线程加载数据&#xff1a;提升GPU利用率 在现代深度学习训练中&#xff0c;一个常见的怪象是&#xff1a;明明配备了A100这样的顶级GPU&#xff0c;监控工具却显示利用率长期徘徊在30%以下。计算资源闲置的同时&#xff0c;实验进度被严重拖慢——这背后往…

作者头像 李华
网站建设 2025/12/29 22:28:31

Docker Compose编排多个PyTorch服务:实现多任务并行处理

Docker Compose编排多个PyTorch服务&#xff1a;实现多任务并行处理 在现代AI系统开发中&#xff0c;一个常见的挑战是&#xff1a;如何在一个有限的硬件资源上&#xff0c;同时运行图像分类、目标检测、语义分割等多个深度学习模型&#xff1f;手动切换环境、反复安装依赖、GP…

作者头像 李华
网站建设 2026/1/5 18:31:57

使用PbootCMS制作网站如何免费做好防护

一、前期准备&#xff1a;备份与版本升级&#xff08;关键第一步&#xff09; 1. 全量备份&#xff08;避免操作失误&#xff09; 登录宝塔面板→【网站】 →【备份】→【立即备份】&#xff08;备份网站文件数据库&#xff09;。额外备份&#xff1a;通过阿里云控制台→【OS…

作者头像 李华
网站建设 2026/1/4 7:48:34

Markdown制作幻灯片:用于PyTorch项目汇报展示

Markdown制作幻灯片&#xff1a;用于PyTorch项目汇报展示 在深度学习项目的日常推进中&#xff0c;一个常被忽视却极为耗时的环节&#xff0c;是将实验结果整理成一份清晰、专业且可复现的汇报材料。许多团队仍依赖 PowerPoint 手动拼接截图、复制指标、调整排版——这一过程不…

作者头像 李华
网站建设 2026/1/9 2:25:52

GitHub Actions持续集成PyTorch模型测试用例

GitHub Actions 持续集成 PyTorch 模型测试用例 在现代深度学习项目中&#xff0c;代码提交后“本地能跑但上线报错”的尴尬场景屡见不鲜。尤其当模型涉及 GPU 加速、分布式训练或混合精度推理时&#xff0c;仅靠 CPU 环境的 CI 测试已远远不够。如何确保每一次 git push 都不会…

作者头像 李华
网站建设 2026/1/9 1:39:36

Java毕设选题推荐:基于SpringBoot+Vue的高尔夫球场服务系统设计与实现基于SpringBoot的高尔夫球场管理系统的设计与实现【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华