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

.net 网站模板 下载昌大建设集团大老板

.net 网站模板 下载,昌大建设集团大老板,网站怎么使用,关于门户网站建设的整改报告问题来源 此题来源于LeetCode547. Friend Circles#xff0c;主要运用了并查集#xff08;union find#xff09;、广度优先遍历#xff08;bfs#xff09;和深度优先遍历#xff08;bfs#xff09;三种方法解决。 问题简述 给定一个NN的矩阵M表示了N个人之见的朋友关…问题来源 此题来源于LeetCode547. Friend Circles主要运用了并查集union find、广度优先遍历bfs和深度优先遍历bfs三种方法解决。 问题简述 给定一个N×NN \times N的矩阵MM表示了NN个人之见的朋友关系。如果M[i][j]1M[i][j]=1那么ii和jj是直接朋友关系如果M[i][j]1M[i][j]=1M[j][k]1M[j][k]=1M[i][k]0M[i][k]=0那么ii和kk是间接朋友关系。我们假定有直接和间接朋友关系的人为一个朋友圈试问MM中有几个朋友圈。 比如:输入: [[1,1,0],[1,1,0],[0,0,1]] 输出: 2 解释:第0和第1个人是直接朋友,他们构成1个朋友圈;第2个人自己构成一个朋友圈,所以返回2。又比如:输入: [[1,1,0],[1,1,1],[0,1,1]] 输出: 1 解释:第0和第1个人是直接朋友,第1和第2个人是直接朋友,所以第0和第2个人是间接朋友,这3个人构成了1个朋友圈,所以返回1。 值得注意的是: 总是有M[i][j]=M[j][i]M[i][j]=M[j][i] 总是有M[i][i]1M[i][i]=1解决方案 利用union find解决 此处的并查集用到了路径压缩的优化。 class Solution { private:vectorint vec;int sz;private:void Initialize(int count){vec vectorint(count);sz count;for (int i 0; i count; i)vec[i] i;}int findRoot(int p){assert(p 0 p sz);while (vec[p] ! p){//路径压缩vec[p] vec[vec[p]];p vec[p];}return vec[p];}void unionNode(int p, int q){assert(p 0 p sz q 0 q sz);int pRoot findRoot(p);int qRoot findRoot(q);if (pRoot ! qRoot)vec[pRoot] qRoot;}public:int findCircleNum(vectorvectorint M) {int m M.size();if (0 m)return 0;Initialize(m);for (int i 0; i m; i){for (int j i 1 ; j m; j){if (M[i][j] 1)unionNode(i, j);}}int res 0;for (int i 0; i m; i)if (vec[i] i)res;return res;} }; 利用bfs解决 由于问题的特殊性每次都只要把对角线上的元素放到队列当中即可。 class Solution { private:int sz;private:void bfs(vectorvectorint M, int x){queueint q;q.push(x);while(!q.empty()){int newX q.front();q.pop();M[newX][newX] 0;for (int i 0; i sz; i){if (1 M[newX][i]){M[newX][i] 0;M[i][newX] 0;if (1 M[i][i])q.push(i);}}}return;}public:int findCircleNum(vectorvectorint M) {int m M.size();if (0 m)return 0;sz m;int res 0;for (int i 0; i m; i){if (1 M[i][i]){bfs(M,i);res;}} return res;} }; 利用dfs解决 dfs与bfs的思路大同小异但元素过多可能会造成栈溢出。 class Solution { private:int sz;private:void dfs(vectorvectorint M, int x, int y){if (0 M[x][y])return;M[x][y] 0;for (int i 0; i sz; i){if (1 M[x][i]){M[x][i] 0;M[i][x] 0;dfs(M, i, i);}}return;}public:int findCircleNum(vectorvectorint M) {int m M.size();if (0 m)return 0;sz m;int res 0;for (int i 0; i m; i){if (1 M[i][i]){dfs(M,i,i);res;}} return res;} }; 结束语 以上三种方法最快的是并查集union findbfs和dfs的速度差不多三者也许都还有优化的余地~
http://www.zqtcl.cn/news/102282/

相关文章:

  • 网站查看空间商网站不提交表单
  • 空间怎么上传网站企业所得税怎么算公式
  • 网站建设wix建筑公司网站设计思路
  • 门户型网站都有哪些网页制作的视频教程
  • 虚拟主机 多个网站没有备案的网站
  • 河南网站建设推广公司汕尾网站建设
  • 海南省建设网站首页公司网站图片传不上去
  • 中国建设银行网站评价广告投放都有哪些平台
  • 网站系统免费wordpress附件不在数据库
  • 网站开发国外研究状况电商推广是什么意思
  • 太原建高铁站wordpress分级菜单显示
  • 工信部网站备案变更运营一个app大概多少钱
  • 杭州网站建设公司哪家好网站建设 中国联盟网
  • 成都手机网站建设价格网站安全检测软件
  • 长沙申请域名网站备案找个做游戏的视频网站
  • 网站平台开发与应用面试西安seo优化顾问
  • 苏州网站制作及推广中国优秀的企业网站
  • 网站开发语言太老东莞哪家公司做网站比较好
  • 单位网站制作费用报价单博客和个人网站建设情况
  • 山东网站建设公司电话全球建筑设计网站
  • wordpress 站点描述国外优秀网页设计赏析
  • php红酒网站建设软件开发外包项目合作
  • 做网站的都改行做什么了上海推牛网络科技有限公司
  • 在哪里建设网站dedecms做网站注意事项
  • 垂直类网站怎么做推广互联网站的建设维护营销
  • 手机网站大全排行江西省赣州市邮政编码
  • 集团网站建设建站模板seo优化工具软件
  • 大连项目备案网站网站建设一下需要多少费用
  • 松溪网站建设做网站外包
  • sdcms网站建设模板WordPress自定义连接菜单