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

扬中零壹网站建设多功能创意产品设计

扬中零壹网站建设,多功能创意产品设计,北京企业网站设计方案,希爱力文章目录1. 题目2. 解题2.1 暴力BFS2.2 聪明的BFS1. 题目 对于一个具有树特征的无向图#xff0c;我们可选择任何一个节点作为根。图因此可以成为树#xff0c;在所有可能的树中#xff0c;具有最小高度的树被称为最小高度树。给出这样的一个图#xff0c;写出一个函数找到… 文章目录1. 题目2. 解题2.1 暴力BFS2.2 聪明的BFS1. 题目 对于一个具有树特征的无向图我们可选择任何一个节点作为根。图因此可以成为树在所有可能的树中具有最小高度的树被称为最小高度树。给出这样的一个图写出一个函数找到所有的最小高度树并返回他们的根节点。 格式 该图包含 n 个节点标记为 0 到 n - 1。给定数字 n 和一个无向边 edges 列表每一个边都是一对标签。 你可以假设没有重复的边会出现在 edges 中。由于所有的边都是无向边 [0, 1]和 [1, 0] 是相同的因此不会同时出现在 edges 里。 示例 1: 输入: n 4, edges [[1, 0], [1, 2], [1, 3]]0|1/ \2 3 输出: [1]示例 2: 输入: n 6, edges [[0, 3], [1, 3], [2, 3], [4, 3], [5, 4]]0 1 2\ | /3|4|5 输出: [3, 4]说明:根据树的定义树是一个无向图其中任何两个顶点只通过一条路径连接。 换句话说一个任何没有简单环路的连通图都是一棵树。 树的高度是指根节点和叶子节点之间最长向下路径上边的数量。来源力扣LeetCode 链接https://leetcode-cn.com/problems/minimum-height-trees 著作权归领扣网络所有。商业转载请联系官方授权非商业转载请注明出处。 2. 解题 2.1 暴力BFS 从每个节点开始BFS记录高度选择最小的高度的起点即可节点很多的时候会超时 class Solution {unordered_mapint,unordered_setint g;vectorint vertex;queueint q; public:vectorint findMinHeightTrees(int n, vectorvectorint edges) {for(auto e : edges){g[e[0]].insert(e[1]);g[e[1]].insert(e[0]);}bool visited[n];int minh INT_MAX, h;for(int i 0; i n; i){memset(visited, 0, sizeof(visited));h 0;visited[i] true;q.push(i);BFS(h,visited);if(h minh){minh h;vertex.clear();vertex.push_back(i);}else if(h minh)vertex.push_back(i);}return vertex;}void BFS(int h, bool* visited){int tp, size;while(!q.empty()){size q.size();while(size--){tp q.front();q.pop();for(const int id : g[tp]){if(!visited[id]){q.push(id);visited[id] true;}}}h;}} };优化下 是最外围的节点是最外围的不用从他开始BFS高度肯定不是最小的见以下代码还是超时 class Solution {unordered_mapint,unordered_setint g;vectorint vertex;queueint q;vectorint lastLv; public:vectorint findMinHeightTrees(int n, vectorvectorint edges) {for(auto e : edges){g[e[0]].insert(e[1]);g[e[1]].insert(e[0]);}bool visited[n];bool outSide[n];//是最外围的节点是最外围的不用从他开始BFS高度肯定不是最小的memset(outSide, 0, sizeof(outSide));int minh INT_MAX, h 0;for(int i 0; i n; i){if(minh 2 outSide[i])continue;memset(visited, 0, sizeof(visited));h 0;visited[i] true;q.push(i);BFS(h,visited,outSide);if(h minh){minh h;vertex.clear();vertex.push_back(i);}else if(h minh)vertex.push_back(i);}return vertex;}void BFS(int h, bool* visited, bool* outSide){int tp, size;while(!q.empty()){size q.size();lastLv.clear();while(size--){tp q.front();q.pop();for(const int id : g[tp]){if(!visited[id]){q.push(id);visited[id] true;lastLv.push_back(id);}}}h;}for(auto id : lastLv)outSide[id] true;} };2.2 聪明的BFS 最低的高度树可能的root只有1个或者2个相当于把一个数组平分两半奇偶可能那么从图中最外围的节点开始找出入度为1把所有的出入度为1的节点push进入队列一层层的剥离节点到遍历的节点只剩下2个或者1时即找到答案 class Solution { public:vectorint findMinHeightTrees(int n, vectorvectorint edges) {if(n 1)return {0};int i, tp, size;unordered_mapint,unordered_setint g;//图的邻接表vectorint vertex;queueint q;//队列for(auto e : edges){g[e[0]].insert(e[1]);//g[e[1]].insert(e[0]);}for(i 0; i n; i)if(g[i].size() 1)//出入度1,最外层的节点q.push(i);//进入队列while(n 2)//剩余节点大于2{size q.size();//在队列里的节点减去n - size;//剩余的节点个数nwhile(size--){tp q.front();//待删除的节点q.pop();for(const int id : g[tp]){g[id].erase(tp);if(g[id].size() 1)//id变成最外层了q.push(id);//进入队列待删}}}while(!q.empty()){vertex.push_back(q.front());q.pop();}return vertex;} };
http://www.zqtcl.cn/news/93633/

相关文章:

  • 外贸公司网站空间哈尔滨seo优化专注
  • 建筑行业综合查询平台优化推广联盟
  • 北京管庄网站建设公司开平网站制作
  • 如何做销售直播网站最专业网站建设
  • 太原市住房和城乡建设局的网站首页网络推广服务外包公司
  • 湘icp备 网站建设 农业 湖南稿定设计免费版
  • 公司网站推广方法陕西省住房建设厅官网
  • 网站关键词排名突然没了无锡企业网站建设报价
  • 找做网站的人网站改版 301跳转
  • 网站备案一次就可以了吧营销管理培训课程
  • 怎么做网站背景专做民宿预定的网站
  • wordpress安装谷歌分析代码建网站seo
  • 百度外卖网站建设与维护方法建设 银行网网站
  • 小程序开发定制开发上海优化价格
  • 来宾住房和城乡建设局网站做外贸推广要做哪些平台
  • 无锡建设网站制作wordpress 知乎
  • 动漫网站源码免费怎么怎么做网站
  • 和两个黑人同时做网站中工互联网站建设
  • windows10PHP 网站建设app应用分发平台开发
  • 中唯建设工程有限公司网站做网站页面对PS切图
  • 个人网页制作成品欣赏seo网站沙盒期
  • 亚马逊站外推广网站怎么做制作营销网站模板免费下载
  • 加拿大网站后缀设计师互联网
  • 做物流的网站有哪些内容共同建设网站心得
  • 主题资源网站建设什么网站做污水处理药剂的好
  • 河北建设厅网站修改密码在哪58同城宿迁二手房
  • 淘宝联盟的购物网站怎么做免费网站模板素材
  • 淄博市网站云平台长沙seo 优化选智投未来no1
  • 手机网站导航模板wordpress子域名设置
  • 济南市网站推广公司甘肃网站建设方案优化