【LeetCode - 每日一题】1761. 一个图中连通三元组的最小度数(23.08.31)

news/2024/10/18 9:23:57/

1761. 一个图中连通三元组的最小度数

题意

  • 寻找所有的连通三元组
  • 返回连通三元组的最小度

code - 1 BFS

一开始的想法是使用 bfs,只要层次遍历三层即可。但是用递归写法会超时,后改成递推写法,注意:

  • 要存储第二层的点。我直接将第二层的点和第三层的点一起 push 进了队列中;
  • 为了减少重复的三元组,只在升序三元组中寻找连通三元组;
class Solution {
public:int maxn = 1e9+10;int ans = maxn;void bfs(int u, vector<vector<int>> g, vector<int> in){// 遍历含有顶点 u 的连通三元组int cnt = 1, curCnt = 0, preCnt = 1;queue<int> q;q.push(u);vector<int> pre(g.size(), -1);while(cnt <= 3){if(cnt == 3) 	// 三元组{while(!q.empty()){int pre = q.front();q.pop();int cur = q.front();q.pop();if(cur > pre && g[cur][u] == 1) 	// 三元组是否连通{int tmp = in[u] + in[pre] + in[cur] - 6;ans = min(ans, tmp);}}}if(q.empty()) break;curCnt = 0;while(preCnt){int cur = q.front();q.pop();preCnt--;for(int i = cur + 1; i < g[cur].size(); i++){if(g[cur][i] == 1)    // 邻接点{if(cnt == 2) 	q.push(cur); 	// 保存第2个点q.push(i);curCnt++;}}}preCnt = curCnt;cnt++;}}int minTrioDegree(int n, vector<vector<int>>& edges) {vector<vector<int> > g(n + 1, vector<int>(n + 1, maxn));vector<int> in(n + 1, 0);for(int i = 0; i < edges.size(); i++){g[edges[i][0]][edges[i][1]] = 1;g[edges[i][1]][edges[i][0]] = 1;in[edges[i][0]]++;in[edges[i][1]]++;}for(int i = 1; i <= n; i++){bfs(i, g, in);cout<<endl;}return ans == maxn ? -1 : ans;}
};

code - 2 暴力解法

暴力遍历所有的三元组,同时为了减少重复的三元组,只检查升序三元组。

class Solution {
public:int maxn = 1e9+10;int minTrioDegree(int n, vector<vector<int>>& edges) {vector<vector<int> > g(n + 1, vector<int>(n + 1, maxn));vector<int> in(n + 1, 0);int ans = maxn;for(int i = 0; i < edges.size(); i++){g[edges[i][0]][edges[i][1]] = 1;g[edges[i][1]][edges[i][0]] = 1;in[edges[i][0]]++;in[edges[i][1]]++;}for(int i = 1; i <= n; i++){for(int j = i + 1; j <= n; j++){for(int k = j + 1; k <= n; k++){if(g[i][j] == 1 && g[j][k] == 1 && g[k][i] == 1){int tmp = in[i] + in[j] + in[k] - 6;ans = min(tmp, ans);}}}}return ans == maxn ? -1 : ans;}
};

复杂度

时间复杂度:O(N3)
空间复杂度:O(N2)



http://www.ppmy.cn/news/1095818.html

相关文章

《基于区块链的数据资产评估实施指南》技术研讨会成功召开

2023年9月1日&#xff0c;《基于区块链的数据资产评估实施指南》&#xff08;以下简称《指南》&#xff09;技术研讨会在深圳召开&#xff0c;竹云科技作为主要参编单位出席此次研讨会。 中国科协决策咨询首席专家王春晖&#xff0c;中国社会科学院博士于小丽&#xff0c;中国…

Matlab图像处理-

有些时候&#xff0c;直接利用图像的灰度直方图选择阈值不是非常直观&#xff0c;这时&#xff0c;可以利用图像三个通道的直方图来进行图像分割&#xff0c;操作步骤如上文所示&#xff0c;下图为原始图片。 下图为三通道直方图。 下图将三个通道的直方图会绘制到一个图表上&a…

人工智能在电子商务中的突破性优势

最近都听说人工智能&#xff08;AI&#xff09;吗&#xff1f;电子商务的人工智能方面尤其受欢迎。当您以正确的方式使用正确的 AI技术时&#xff0c;您可以彻底改变您的经营方式。AI可帮助您节省时间、减少手动工作并提高数据的质量和准确性。 从本质上讲&#xff0c;您现在可…

异步编程 - 08 Spring框架中的异步执行_TaskExecutor接口和@Async应用篇

文章目录 概述Spring中对TaskExecutor的抽象Spring框架内置的TaskExecutor实现。SimpleAsyncTaskExecutorSyncTaskExecutorConcurrentTaskExecutorSimpleThreadPoolTaskExecutorThreadPoolTaskExecutorTimerTaskExecutor小结 如何在Spring中使用异步执行使用TaskExecutor实现异…

只依赖OPENCV的工作服安全帽检测YOLOV8S

工地安全帽工作服检测Y8S&#xff0c;采用YOLOV8S训练模型&#xff0c;然后使用OPENCV的DNN调用&#xff0c;彻底拜托PYTORCH依赖&#xff0c;可以在C,PYTHON,ANDROID上跑。附件是C生成的效果测试&#xff08;只需解压将图片或者视频放入VIDEOS文件夹&#xff0c;文件夹没图片或…

重写与重载笔记

方法的重载(overload)&#xff1a;---------------------大大简化方法的调用 发生在同一类中&#xff0c;方法名相同&#xff0c;参数列表不同,方法的重载与返回值类型无关编译器在编译时会根据方法的签名自动绑定调用的方法 重写&#xff1a; 发生在父子类中&#xff0c;方法名…

CSS笔记(黑马程序员pink老师前端)选择器,字体,文本属性,Emmet语法,元素显示模式,CSS背景

选择器 选择器分为基础选择器和复合选择器两大类。 基础选择器 包括:标签选择器、类选择器、id选择器和通配符选择器。 /*标签选择器 */p {color: red;}/*类选择器 */.classname {color: yellow;}/*id选择器 */#idname {color: blue;}/*通配符选择器&#xff0c;选择页面所有的…

RHCSA-VMware Workstation Pro-Linux基础配置命令

1.代码命令 1.查看本机IP地址&#xff1a; ip addr 或者 ip a [foxbogon ~]$ ip addre [foxbogon ~]$ ip a 1&#xff1a;<Loopback,U,LOWER-UP> 为环回2网卡 2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP>为虚拟机自身网卡 2.测试网络联通性&#xff1a; [f…