news 2026/8/15 0:50:53

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进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/13 5:06:08

使用“TextIn智能文字识别产品”实现AI OCR智能识别方案,赋能企业数字化转型新时代

随着深度学习、大数据、人工智能、AI等技术领域的不断发展&#xff0c;机器学习是目前最火热的人工智能分支之一&#xff0c;是使用大量数据训练计算机程序&#xff0c;以实现智能决策、语音识别、图像处理等任务。各行各业都在积极探索这些技术的应用。特别是在深度学习领域&a…

作者头像 李华
网站建设 2026/8/13 5:06:06

HuggingFace Pipeline快速调用:零代码运行大模型生成token

HuggingFace Pipeline快速调用&#xff1a;零代码运行大模型生成token 在实验室里&#xff0c;一个研究生正为部署Llama3焦头烂额——CUDA版本不匹配、PyTorch编译报错、显存溢出……而隔壁工位的同事只用三行代码就跑通了GPT-2文本生成。这种反差背后&#xff0c;正是现代AI工…

作者头像 李华
网站建设 2026/8/12 16:04:29

YOLO系列模型统一训练平台:基于PyTorch-CUDA-v2.8构建

YOLO系列模型统一训练平台&#xff1a;基于PyTorch-CUDA-v2.8构建 在当前智能视觉应用爆发式增长的背景下&#xff0c;目标检测技术正以前所未有的速度渗透到自动驾驶、工业质检、安防监控等关键领域。YOLO&#xff08;You Only Look Once&#xff09;系列因其“单次前向传播即…

作者头像 李华
网站建设 2026/8/11 17:08:12

道路坑洞检测数据集介绍-2800张图片 智能交通监控系统 自动驾驶车辆感知 道路维护管理 移动巡检系统 移动巡检系统 保险理赔评估 城市基础设施数字化

&#x1f4e6;点击查看-已发布目标检测数据集合集&#xff08;持续更新&#xff09; 数据集名称图像数量应用方向博客链接&#x1f50c; 电网巡检检测数据集1600 张电力设备目标检测点击查看&#x1f525; 火焰 / 烟雾 / 人检测数据集10000张安防监控&#xff0c;多目标检测点…

作者头像 李华
网站建设 2026/8/11 17:08:11

强化学习笔记

基本概念 强化学习中涉及的基本概念&#xff1a; 环境 (Environment)&#xff1a;环境是智能体所处的外部系统&#xff0c;它负责产生当前的状态&#xff0c;接收智能体的动作并返回新的状态和对应的奖励。环境的作用相当于模拟现实中的条件和反应规则&#xff0c;智能体只能通…

作者头像 李华
网站建设 2026/8/11 17:08:09

揭秘要诀!AI应用架构师揭秘企业算力资源调度要诀

揭秘要诀&#xff01;AI应用架构师揭秘企业算力资源调度要诀 关键词&#xff1a;AI应用架构师、企业算力资源调度、资源分配、负载均衡、调度算法、算力优化、云计算 摘要&#xff1a;本文由AI应用架构师深入剖析企业算力资源调度的关键要诀。首先介绍算力资源调度在企业发展尤…

作者头像 李华