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

营销网站html网页游戏平台代理

营销网站html,网页游戏平台代理,网站首页排名seo搜索优化,wordpress教程哪本好2024.3.26 题目来源我的题解方法一 Dijkstra算法求最短路径方法二 Floyd算法求最短路径 题目来源 力扣每日一题#xff1b;题序#xff1a;2642 我的题解 方法一 Dijkstra算法求最短路径 图使用邻接表存储#xff0c;添加边只需要更新邻接表就行。 求两个节点的路径最小代… 2024.3.26 题目来源我的题解方法一 Dijkstra算法求最短路径方法二 Floyd算法求最短路径 题目来源 力扣每日一题题序2642 我的题解 方法一 Dijkstra算法求最短路径 图使用邻接表存储添加边只需要更新邻接表就行。 求两个节点的路径最小代价使用dijkstra算法来实现 时间复杂度 Graph 类初始化时时间复杂度为 O(m)其中 mmm 表示给定的 edges 数组的长度。调用 addEdge时此时直接在邻接边中添加一条边即可时间复杂度为 O(1) 。调用 shortestPath 时需要的时间复杂度为 O((mk)log⁡(mk))其中 m 表示给定的 edges 数组的长度k 表示调用 addEdge的次数。使用优先队列的 「Dijkstra 算法」的时间度与图中边的数量关系有关需要的时间即为O((mk)log⁡(mk))。 空间复杂度O(mnk)。n表示给定的节点数。 class Graph {ListInteger[] g;int N101;public Graph(int n, int[][] edges) {gcreateGraph(n,edges);}private ListInteger[] createGraph(int n,int[][] edges){ListInteger[] gnew ArrayList[N];for(int i0;iN;i)g[i]new ArrayList();for(int[] t:edges){int from t[0];int to t[1];int w t[2];g[from].add(to);g[from].add(w);}return g;}public void addEdge(int[] edge) {int from edge[0];int to edge[1];int w edge[2];g[from].add(to);g[from].add(w);}public int shortestPath(int node1, int node2) {return dijkstra(node1,node2); }private int dijkstra(int root,int target){PriorityQueueint[] pq new PriorityQueueint[]((a, b) - a[0] - b[0]);int[] dist new int[g.length];Arrays.fill(dist, Integer.MAX_VALUE);dist[root] 0;pq.offer(new int[]{0, root});while (!pq.isEmpty()) {int[] arr pq.poll();int cost arr[0], cur arr[1];if (cur target) {return cost;}for (int i0;ig[cur].size();i2) {int next g[cur].get(i), ncost g[cur].get(i1);// System.out.println(next ncost);if (dist[next] cost ncost) {dist[next] cost ncost;pq.offer(new int[]{cost ncost, next});}}}return -1;} }方法二 Floyd算法求最短路径 不需要单独存储图只需要使用一个矩阵存储各个节点之间的最短距离然后利用Floyd算法求最短路径。优点在于不用每次addEdge之后需要重新计算每个点之间的最短距离而是采用更新的方式进行更新。 时间复杂度 Graph 类初始化时时间复杂度为 O(n3m)其中 m 表示给定的 edges 数组的长度n 表示给定的节点数目 n。初始边时需要的时间为 O(m)使用「Floyd 算法」求任意两条边的最短路径需要的时间复杂度为 O(n3)总的时间为 O(n3m)。调用 addEdge 时Floyd 本质为动态规划增加一条新的边时需要动态更新此时需要的时间复杂度为 O(n2)。调用 shortestPath 时需要的时间为 O(1)。 空间复杂度O( n 2 n^2 n2) class Graph {private int[][] dist;public Graph(int n, int[][] edges) {dist new int[n][n];for (int i 0; i n; i) {Arrays.fill(dist[i], Integer.MAX_VALUE);dist[i][i] 0;}for (int[] edge : edges) {dist[edge[0]][edge[1]] edge[2];}for (int k 0; k n; k) {for (int i 0; i n; i) {for (int j 0; j n; j) {if (dist[i][k] ! Integer.MAX_VALUE dist[k][j] ! Integer.MAX_VALUE) {dist[i][j] Math.min(dist[i][j], dist[i][k] dist[k][j]);}}}}}public void addEdge(int[] edge) {int x edge[0], y edge[1], cost edge[2];if (cost dist[x][y]) {return;}int n dist.length;for (int i 0; i n; i) {for (int j 0; j n; j) {if (dist[i][x] ! Integer.MAX_VALUE dist[y][j] ! Integer.MAX_VALUE) {dist[i][j] Math.min(dist[i][j], dist[i][x] cost dist[y][j]);}}}}public int shortestPath(int node1, int node2) {int res dist[node1][node2];return res Integer.MAX_VALUE ? -1 : res;} }有任何问题欢迎评论区交流欢迎评论区提供其它解题思路代码也可以点个赞支持一下作者哈~
http://www.zqtcl.cn/news/668040/

相关文章:

  • 如何做网站充值用flash做网站超链接
  • 网站图片管理系统临沂百度推广多少钱
  • 渭南建设用地规划查询网站教育局两学一做网站
  • 无锡专业网站制作的公司长春seo技术
  • 东莞做网站哪家最好电商网站支付接口
  • 西安火车站网站建设深圳做百度网站
  • asp网站助手金融学类就业方向及就业前景
  • 用点心做点心官方网站现在手机网站用什么做的好
  • 唐山市路桥建设有限公司网站专门写文章的网站
  • 东莞食品网站建设湖南企业竞价优化
  • 吉林网站建设找哪家湛江大型网站模板建设
  • 中国建设监理业协会网站国产cms
  • 计算机网站建设与维护wordpress 500错误
  • 元器件网站开发客户wordpress伪静态301错误
  • 网站设计排行怎么样用ppt做网站
  • 网站联盟名词解释网站建设 上海网站建设
  • 南通优普高端网站建设wordpress 煎蛋主题
  • 大企业网站制作及维护关于网站建设的论文题目
  • wordpress网站字体淄博网站搜索排名
  • visual stdio 做网站 注册用户 密码必须6位以上品牌服装网站源码
  • 做网站用到的技术湖南建设银行网站
  • 成都大型网站设计公司电脑上重新下载一个wordpress
  • 番禺网站建设知乎自己做网站卖矿山设备
  • 手表网站起名登录页面html模板
  • 泰国如何做网站推广大英网站建设工作
  • 山东省职业能力建设处网站dz论坛怎么做视频网站吗
  • 郑州专业做网站的公司今天郑州最新通告
  • wap网站引导页特效wordpress 文章 数据库
  • 做建筑效果图最好的网站做网站是如果盈利的
  • 企业网站seo托管怎么做seo公司培训