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

免费建立自己微网站吗哪里网站建设

免费建立自己微网站吗,哪里网站建设,环球易购做中东的网站,网站开发与运营想要精通算法和SQL的成长之路 - 受限条件下可到达节点的数目 前言一. 相交链表(邻接图和DFS) 前言 想要精通算法和SQL的成长之路 - 系列导航 一. 相交链表(邻接图和DFS) 原题链接 public int reachableNodes(int n, int[][] ed…

想要精通算法和SQL的成长之路 - 受限条件下可到达节点的数目

  • 前言
  • 一. 相交链表(邻接图和DFS)

前言

想要精通算法和SQL的成长之路 - 系列导航

一. 相交链表(邻接图和DFS)

原题链接
在这里插入图片描述

public int reachableNodes(int n, int[][] edges, int[] restricted) {
}

我们读一下题目,我们总结几个核心的点:

  1. 无向图。
  2. 受限节点。
  3. 题目用一个二维数组代表图。

针对第一个点和第三个点:我们用何种方式通过二维数组来构建出一个无向图?

使用邻接图。在Java当中,邻接图可以用下面一个模板来完成:

List<Integer>[] adj = new List[n];
// 初始化每个数组
for (int i = 0; i < n; i++) {adj[i] = new ArrayList<>();
}
for (int[] edge : edges) {adj[前继节点].add(后继节点);
}

那么由于本题目又特意声明了它是一个无向图,我们前后顺序换一下再存储一次即可:

adj[前继节点].add(后继节点);
adj[后继节点].add(前继节点);

针对第二点:受限节点。我们用一个一维数组,代表每个元素是否受限,下标即是对应的元素值:

boolean[] limits = new boolean[n];
for (int i : restricted) {limits[i] = true;
}

有了这些数据,我们就可以通过DFS去递归遍历这颗树:

  1. 我们指定对应的元素 0 作为根节点,向后继节点递归。
  2. 同时因为无向的关系,我们在递归节点的时候,需要做判断,当前节点并不是父节点,满足条件才可往深层递归。否则就会出现死循环。

例如:以上图的案例,最终的无向图数据部分如下:

  • 0–>1,4,5。
  • 1->0,1,3

死循环逻辑如下:

  • 第一层:倘若当前节点为1的时候,根据顺序深层递归。递归节点0。
  • 第二层:当前遍历节点为0,发现0的相邻节点有1,开始递归节点1。回到第一步。
  • 第三层…

因此我们在dfs递归的时候需要有两个参数:

  1. 当前节点。
  2. 当前节点的父节点。

同时我们用一个全局变量count代表递归的数量(即是题目返回要求)

void dfs(int root, int pre) {count++;for (int node : adj[root]) {if (!limits[node] && node != pre) {dfs(node, root);}}
}

最终完整代码如下:

public class Test2368 {int count = 0;List<Integer>[] adj;boolean[] limits;public int reachableNodes(int n, int[][] edges, int[] restricted) {// 邻接图数据构建adj = new List[n];for (int i = 0; i < n; i++) {adj[i] = new ArrayList<>();}for (int[] edge : edges) {adj[edge[0]].add(edge[1]);adj[edge[1]].add(edge[0]);}// 构建受限节点数组limits = new boolean[n];for (int i : restricted) {limits[i] = true;}// 开始递归,从根节点0开始,父节点不存在,我们传一个-1dfs(0, -1);return count;}void dfs(int root, int pre) {count++;// adj[root] 就是与 当前节点 所有的相邻节点for (int node : adj[root]) {// 非受限节点并且当前节点并不是父节点的时候,继续往下递归if (!limits[node] && node != pre) {dfs(node, root);}}}
}
http://www.15wanjia.com/news/163233.html

相关文章:

  • 如何快捷建企业网站重庆做的好的房产网站好
  • 义乌网站开发公司wordpress建站视频教程
  • wordpress 整站带数据国内app开发公司前十名
  • 保亭交通工程建设局网站中国建行官网首页
  • 用户浏览网站的习惯网页视频怎么下载到本地视频电脑
  • wordpress to_ping静安网站建设关键词优化seo
  • 百色高端网站建设遵义市和城乡建设局网站
  • 从您的角度来看_对于农产品网站的建设有什么想法或建议呢?常用的网络推广方法有哪些
  • 网站做菠菜微信crm管理系统
  • 做夹具需要知道的几个网站模板网站怎么做卖
  • 建网站需要注意的问题自己在线制作logo免费生成器
  • 成都门户网站建设wordpress引导页
  • 黄金网站软件免费重庆市建设工程信息网安
  • 邢台网站推广费用南山医院网站建设
  • 找人做网站安全吗建网站的公司起什么名好
  • 公司网站有哪些优化营商环境 提升服务效能
  • 大学做视频网站设计连云港做网站哪里好
  • 在线网站建设培训四川互联网广告人
  • 太原seo网站排名做网站 最好的开源cms
  • 百度的网站wordpress新闻快讯插件
  • 有关做美食的网站有哪些泉州网站建设哪里好
  • 可信网站标志个人博客平台
  • 网站建设找天宇智能WordPress安卓APP不能绑定
  • 国际摄影网站青岛做网站建设的公司排名
  • 文广网站建设医药网站建设中图片
  • 如需郑州网站建设网站开发 资质
  • 做公司网站的南宁公司电商网站设计网络服务
  • 杭州网站界面设计wordpress怎么烤别人的
  • 优化排名对网站不好网站开发与管理所对应的职位及岗位
  • 代做网站修改维护灵山建设局网站