当前位置: 首页 > news >正文

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;

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

http://www.jsqmd.com/news/161809/

相关文章:

  • PyTorch模型量化压缩:降低token生成延迟,节省GPU资源
  • Markdown嵌入交互式图表:动态展示PyTorch训练曲线
  • python实现堆结构
  • Conda环境删除恢复:误删后如何找回PyTorch配置
  • PyTorch张量操作详解:充分利用GPU加速矩阵运算
  • 如何查看GPU显存占用?nvidia-smi与PyTorch监控结合使用
  • GitHub Actions私有仓库CI/CD:自动化PyTorch模型测试
  • JiyuTrainer支持Hyperparameter Sweep:自动搜索最优配置
  • Markdown表格对比不同PyTorch版本特性
  • PyTorch DataLoader多线程加载数据:提升GPU利用率
  • 道路坑洞检测数据集介绍-2800张图片 智能交通监控系统 自动驾驶车辆感知 道路维护管理 移动巡检系统 移动巡检系统 保险理赔评估 城市基础设施数字化
  • Conda环境克隆:快速复制已验证的PyTorch配置
  • Git下载大型模型权重文件失败?教你用git-lfs和镜像加速解决
  • Markdown制作幻灯片:用于PyTorch项目汇报展示
  • Conda配置PyTorch环境全攻略:避免常见CUDA版本冲突问题
  • 揭秘要诀!AI应用架构师揭秘企业算力资源调度要诀
  • YOLOv5s模型转ONNX格式:借助PyTorch-CUDA完成导出
  • Markdown绘制流程图:说明PyTorch模型训练架构
  • Jupyter Notebook内核崩溃?检查PyTorch内存泄漏问题
  • 【计算机毕业设计案例】基于SpringBoot的高尔夫球场会员信息、消费记录管理系统的设计与实现(程序+文档+讲解+定制)
  • 强化学习笔记
  • 从零搭建深度学习工作站:选择合适的CUDA驱动与PyTorch版本
  • diskinfo工具监测SSD寿命:保障GPU服务器稳定运行
  • AppML 案例模型
  • Windows搭建和使用vulhub的一些常用命令
  • Markdown写技术博客必备:记录PyTorch安装与调试全过程
  • Anaconda配置PyTorch环境最佳实践:含CUDA版本匹配技巧
  • 清华镜像站同步频率解析:确保PyTorch包版本最新
  • 常见处理器架构中的ALU状态标志是什么?
  • 2025国内最新裸眼3D品牌 TOP5 推荐!服务深耕于四川、成都、广州、北京、云南等地区,优质服务厂家及企业权威榜单发布,重构视觉展示新生态 - 全局中转站