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

信息系统软件有哪些网络优化工程师有多累

信息系统软件有哪些,网络优化工程师有多累,如何进行电子商务网站建设规划,景观设计学文章目录 1. 代码仓库2. 思路2.1 UF变量设计2.2 UF合并两个集合2.3 查找当前顶点的父节点 find(element) 3. 完整代码 1. 代码仓库 https://github.com/Chufeng-Jiang/Graph-Theory 2. 思路 2.1 UF变量设计 parent数组保存着每个节点所指向的父节点的索引,初始值为…

文章目录

  • 1. 代码仓库
  • 2. 思路
    • 2.1 UF变量设计
    • 2.2 UF合并两个集合
    • 2.3 查找当前顶点的父节点 find(element)
  • 3. 完整代码

1. 代码仓库

https://github.com/Chufeng-Jiang/Graph-Theory

2. 思路

2.1 UF变量设计

在这里插入图片描述

parent数组保存着每个节点所指向的父节点的索引,初始值为当前顶点编号,指向自己。

后期在合并的时候均指向其合并的另一个元素的父节点,也就是p->a, q->q,合并p和q时,改变q的指向,q->a.

最终a下面挂两个节点,分别为p, q.

//parent数组中保存着每个节点所指向的父节点的索引
private int[] parent;sz数组来保存每个根节点所代表的子树中元素的数量 
private int[] sz;

2.2 UF合并两个集合

查找两个元素的父节点,父节点相同则属于同一个集合

public void unionElements(int p, int q) {int pRoot = find(p); // 找到p的父节点int qRoot = find(q); // 找到q的父节点if (pRoot == qRoot) // 如果pq的父节点相同,说明在同一个集合内return;parent[pRoot] = qRoot; //如果不相同,将p的父节点挂到q的父节点下,进行合并sz[qRoot] += sz[pRoot]; //q的集合大小合并
}

2.3 查找当前顶点的父节点 find(element)

递归查找父节点,只要不满足p = parent[p],就肯定没有到达最上层。find(parent[p])为查找p节点的

public int find(int p) {if (p != parent[p]) //还没找到根节点parent[p] = find(parent[p]); //递归实现//p = parent[p]时,就是父节点return parent[p]; 
}

在这里插入图片描述

3. 完整代码

public class Union_Find {class UF {private int[] parent; //parent数组中保存着每个节点所指向的父节点的索引private int[] sz;public UF(int n) {parent = new int[n];sz = new int[n];for (int i = 0; i < n; i++) {parent[i] = i; //初始化的时候当前节点的父节点都是自己sz[i] = 1; //当前所属集合的大小}}// 不断去查询自己的父亲节点, 直到到达根节点// 根节点的特点: parent[p] == ppublic int find(int p) {if (p != parent[p]) //还没找到根节点parent[p] = find(parent[p]); //递归实现return parent[p]; //终于找到根节点}public boolean isConnected(int p, int q) {return find(p) == find(q);}public void unionElements(int p, int q) {int pRoot = find(p); //找到p的父节点int qRoot = find(q); //找到q的父节点if (pRoot == qRoot)//如果pq的父节点相同,说明在同一个集合内return;parent[pRoot] = qRoot; //如果不相同,将p的父节点挂到q的父节点下,进行合并sz[qRoot] += sz[pRoot]; //q的集合大小合并}public int size(int p) {return sz[find(p)];}}private int[][] dirs = {{-1, 0}, {0, 1}, {1, 0}, {0, -1}};private int R, C;public int maxAreaOfIsland(int[][] grid) {if (grid == null) return 0;R = grid.length;if (R == 0) return 0;C = grid[0].length;if (C == 0) return 0;UF uf = new UF(R * C);for (int v = 0; v < R * C; v++) {int x = v / C, y = v % C;if (grid[x][y] == 1)for (int d = 0; d < 4; d++) {int nextx = x + dirs[d][0], nexty = y + dirs[d][1];if (inArea(nextx, nexty) && grid[nextx][nexty] == 1) {int next = nextx * C + nexty;uf.unionElements(v, next);}}}int res = 0;for (int v = 0; v < R * C; v++) {int x = v / C, y = v % C;if (grid[x][y] == 1)res = Math.max(res, uf.size(v)); //遍历找到最大的size}return res;}private boolean inArea(int x, int y) {return x >= 0 && x < R && y >= 0 && y < C;}
}
http://www.mmbaike.com/news/49199.html

相关文章:

  • 网站分为哪几个部分新站优化案例
  • 网站版面布局seo网站优化培训怎么样
  • 福田做商城网站建设找哪家公司比较安全电商关键词一般用哪些工具
  • 一个网站上线需要什么企业seo优化服务
  • 甘肃建筑人才网百度推广优化公司
  • 做网站优化找谁小红书seo排名
  • 夹江发布app北京优化推广公司
  • 闵行交大网站建设最大免费发布平台
  • 珠海制作企业网站企业建站 平台
  • 做视频网站多少钱怎么查询搜索关键词
  • 网站推广费用怎么做分录深度优化
  • 东莞常平做网站全网搜索指数
  • 连云港网站建设公司营销对企业的重要性
  • 专门做销售招聘网站域名查询注册信息查询
  • 淄博微信网站制作百度推广联系方式
  • 深圳做企业网站的公司推荐免费发布推广信息的平台有哪些
  • 自己做自己的私人网站seo排名点击工具
  • 已经有了域名和服务器怎么做网站成功营销十大经典案例
  • 哪里网站建设便宜投诉百度最有效的电话
  • 搭网站可以用自己电脑做服务器吗seo最好的工具
  • 用DW给网站做后台广东河源最新疫情
  • 网页设计建立站点步骤seo平台优化服务
  • 盘锦网站建设网络推广是什么意思
  • seo如何根据网站数据做报表app推广方式有哪些
  • 快速建站代理搜索引擎网址有哪些
  • 东营市公司网站建设价格关键词歌词表达的意思
  • wordpress 升级后 插件seo数据优化教程
  • 网站开发工作总结报告开电商需要多少钱
  • 台州网站建设方案咨询域名注册人查询
  • 做网站直接开二级域名ks免费刷粉网站推广