news 2026/5/4 10:24:29

【Leetcode】1857. Largest Color Value in a Directed Graph

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Leetcode】1857. Largest Color Value in a Directed Graph

题目地址:

https://leetcode.com/problems/largest-color-value-in-a-directed-graph/description/

给定给一个n nn个顶点的无权有向图,每个顶点有个颜色。一条路径的颜色数定义为其所有顶点里,颜色使用频率最高的那个颜色的使用频率。问所有路径中,颜色数最大是多少。如果有环则返回− 1 -11

f [ u ] [ c ] f[u][c]f[u][c]是以u uu结尾的所有路径中c cc的最高频率。由于同一个路径,如果起点能延伸的话,对于每个颜色的频率都有可能增长,所以我们肯定希望路径越长越好。我们考虑用拓扑排序来做,在分层图上做递推,显然当u uu的颜色不为c cc时,f [ u ] [ c ] = max ⁡ v → u { f [ v ] [ c ] } f[u][c]=\max_{v\to u} \{f[v][c]\}f[u][c]=maxvu{f[v][c]};否则f [ u ] [ c ] = 1 + max ⁡ v → u { f [ v ] [ c ] } f[u][c]=1+\max_{v\to u} \{f[v][c]\}f[u][c]=1+maxvu{f[v][c]}。同时拓扑排序还需要记录有没有环。如果没有环的话,最终答案就是max ⁡ u , c f [ u ] [ c ] \max_{u,c} f[u][c]maxu,cf[u][c]。代码如下:

classSolution{public:intlargestPathValue(string&col,vector<vector<int>>&es){intn=col.size(),m=es.size();vector<int>h(n,-1),e(m),ne(m),ind(n);intidx=0;autoadd=[&](inta,intb){e[idx]=b,ne[idx]=h[a],h[a]=idx++;};for(auto&e:es){add(e[0],e[1]);ind[e[1]]++;}vector<array<int,26>>cnt(n,array<int,26>{});queue<int>q;for(inti=0;i<n;i++)if(!ind[i])q.push(i);intres=0,vis_cnt=0;while(q.size()){intu=q.front();q.pop();vis_cnt++;intcu=col[u]-'a';cnt[u][cu]++;res=max(res,cnt[u][cu]);for(inti=h[u];~i;i=ne[i]){intv=e[i],cv=col[v]-'a';for(intc=0;c<26;c++)cnt[v][c]=max(cnt[v][c],cnt[u][c]);if(!--ind[v])q.push(v);}}returnvis_cnt==n?res:-1;}};

时空复杂度O ( n + m ) O(n+m)O(n+m)

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

云原生环境中 Docker 的跨平台部署

云原生环境中 Docker 的跨平台部署 关键词:云原生、Docker、跨平台部署、容器技术、多架构支持 摘要:本文聚焦于云原生环境中 Docker 的跨平台部署。随着云原生技术的发展,Docker 作为容器化技术的代表,在不同平台上的部署需求日益增长。文章首先介绍了云原生和 Docker 跨平…

作者头像 李华
网站建设 2026/5/1 10:49:27

测试即投资:自动化、质量与职业增长的复合收益

超越Bug追踪的测试新定位 在DevOps与持续交付成为主流的今天&#xff0c;测试早已不再是简单的“找错”环节。据2025年《全球软件质量报告》显示&#xff0c;高效测试团队能将生产环境缺陷率降低60%&#xff0c;同时缩短40%的需求交付周期。本文旨在打破“测试即开销”的固有认…

作者头像 李华