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

php在动态网站开发中的优势流感用什么药最好

php在动态网站开发中的优势,流感用什么药最好,网站seo优化教程,网站规划建设与管理维护力扣labuladong一刷day49天迪杰斯特拉 文章目录 力扣labuladong一刷day49天迪杰斯特拉一、743. 网络延迟时间二、1631. 最小体力消耗路径三、1514. 概率最大的路径 一、743. 网络延迟时间 题目链接:https://leetcode.cn/problems/network-delay-time/ 使用迪杰斯特…

力扣labuladong一刷day49天迪杰斯特拉

文章目录

      • 力扣labuladong一刷day49天迪杰斯特拉
      • 一、743. 网络延迟时间
      • 二、1631. 最小体力消耗路径
      • 三、1514. 概率最大的路径

一、743. 网络延迟时间

题目链接:https://leetcode.cn/problems/network-delay-time/
使用迪杰斯特拉解决加权图某点到所有节点距离的问题。
如果是无权图,采用广度优先遍历即可,就把图想象成一颗树,广度优先就可以说是层序遍历。
而加权图寻找最短距离,最经典算法就是迪杰斯特拉算法,我们可以计算出某一个点到任意一个之间的最短距离。我们采用优先级队列,里面的每一个元素记录的是某点到起点之间的最短距离,我们会一直按照最短距离更新,这样到达结尾后即可得到最短距离。

class Solution {public int networkDelayTime(int[][] times, int n, int k) {List<int[]>[] graph = new ArrayList[n + 1];for (int i = 0; i <= n; i++) {graph[i] = new ArrayList<>();}for (int[] time : times) {int a = time[0], b = time[1], c = time[2];graph[a].add(new int[]{b, c});}int[] dist = djk(k, graph);int res = -1;for (int i = 1; i < dist.length; i++) {if (dist[i] == Integer.MAX_VALUE) return -1;res = Math.max(res, dist[i]);}return res;}class State {int id;int sToMe;public State(int id, int sToMe) {this.id = id;this.sToMe = sToMe;}}int[] djk(int start, List<int[]>[] graph) {int[] dist = new int[graph.length];Arrays.fill(dist, Integer.MAX_VALUE);PriorityQueue<State> pq = new PriorityQueue<>((a, b) -> a.sToMe - b.sToMe);dist[start] = 0;pq.add(new State(start, 0));while (!pq.isEmpty()) {State poll = pq.poll();int id = poll.id;int cur = poll.sToMe;if (cur > dist[id]) continue;for (int[] ints : graph[id]) {int nextId = ints[0];int temp = dist[id] + ints[1];if (temp < dist[nextId]) {dist[nextId] = temp;pq.add(new State(nextId, temp));}}}return dist;}
}

二、1631. 最小体力消耗路径

题目链接:https://leetcode.cn/problems/path-with-minimum-effort/
思路:基本上就是迪杰斯特拉的典型题目,只不过这一次求的是最小消耗,但我们在过程中需要求每一条路径的最大消耗,在去往下一个点时选择这些最大消耗中的最小消耗,做为路径的延伸。

class Solution {public int minimumEffortPath(int[][] heights) {int r = heights.length, c = heights[0].length;return djk(heights);}List<int[]> getList(int x, int y, int r, int c) {int[][] temp = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}};List<int[]> list = new ArrayList<>();for (int[] ints : temp) {int nx = x + ints[0], ny = y + ints[1];if (nx < 0 || nx >= r || ny < 0 || ny >= c) continue;list.add(new int[] {nx, ny});}return list;}class State {int x;int y;int sToMe;public State(int x, int y, int sToMe) {this.x = x;this.y = y;this.sToMe = sToMe;}}int djk(int[][] heights) {int r = heights.length, c = heights[0].length;int[][] dist = new int[r][c];PriorityQueue<State> pq = new PriorityQueue<>((a, b)-> a.sToMe - b.sToMe);for (int i = 0; i < r; i++) {Arrays.fill(dist[i], Integer.MAX_VALUE);}pq.add(new State(0, 0, 0));dist[0][0] = 0;while (!pq.isEmpty()) {State poll = pq.poll();int x = poll.x, y = poll.y;int cur = poll.sToMe;if (x == r-1 && y == c-1) return cur;if (cur > dist[x][y]) continue;for (int[] ints : getList(x, y, r, c)) {int nLen =  Math.max(dist[x][y], Math.abs(heights[x][y]-heights[ints[0]][ints[1]]));if (nLen < dist[ints[0]][ints[1]]) {dist[ints[0]][ints[1]] = nLen;pq.add(new State(ints[0], ints[1], nLen));}}}return -1;}
}

三、1514. 概率最大的路径

题目链接:https://leetcode.cn/problems/path-with-maximum-probability/
思路:这题和上一题又有点不一样,相当于求最长路径,那么需要把优先级队列按照从大到小排序即可。

class Solution {public double maxProbability(int n, int[][] edges, double[] succProb, int start_node, int end_node) {List<double[]>[] graph = new ArrayList[n];for (int i = 0; i < n; i++) {graph[i] = new ArrayList<>();}for (int i = 0; i < edges.length; i++) {int from = edges[i][0], to = edges[i][1];graph[from].add(new double[]{to, succProb[i]});graph[to].add(new double[]{from, succProb[i]});}return djk(graph, start_node, end_node);}class State{int id;double sToE;public State(int id, double sToE) {this.id = id;this.sToE = sToE;}}double djk(List<double[]>[] graph, int s, int e) {double[] dist = new double[graph.length];PriorityQueue<State> pq = new PriorityQueue<>((a, b)->Double.compare(b.sToE, a.sToE));Arrays.fill(dist, -1);dist[s] = 1;pq.add(new State(s, 1));while (!pq.isEmpty()) {State poll = pq.poll();int id = poll.id;double cur = poll.sToE;if (id == e) return cur;if (cur < dist[id]) continue;for (double[] ints : graph[id]) {int to = (int) ints[0];double nLen = cur * ints[1];if (nLen > dist[to]) {dist[to] = nLen;pq.add(new State(to, nLen));}}}return 0.0;}
}
http://www.wangmingla.cn/news/69124.html

相关文章:

  • 石狮网站建设公司哪家好淘宝运营
  • 简单的网站开发网络营销师课程
  • 潭州教育网站开发今日头条十大热点
  • 优化网站建设seo排名优化北京
  • 做衣服类网站策划书新闻20字摘抄大全
  • 怎么识别网站开发语言杭州市优化服务
  • 泉州最专业手机网站建设开发seo优化诊断
  • 怎样设置个人网站seo排名优化联系13火星软件
  • wordpress如何添加内链seo推广骗局
  • wordpress模板在哪个目录厦门seo排名公司
  • 网站转换率深圳网站搜索优化工具
  • 极速微网站建设cms比百度强大的搜索引擎
  • 中山做网站建设联系电话日本今日新闻头条
  • 宿迁哪家做网站推广百度广告点击软件源码
  • wordpress自动更新表格沈阳网络seo公司
  • 网站的备案信息百度怎样免费发布信息
  • 闲鱼怎么做钓鱼网站软件怎么推广
  • 荆门城乡建设局网站网站seo文章
  • wordpress多用户主题百度搜索排行seo
  • leave a reply wordpress东莞网站推广优化公司
  • 公司名称注册重名查询官网百度seo代理
  • 网站原创文章规范培训机构需要什么资质
  • 做宠物网站的工作室企业网络搭建方案
  • 模块化网站开发培训机构排名一览表
  • 深圳做网站那家公司好国际新闻最新消息今天 新闻
  • 马良行网站3d模型预览怎么做的在线建站平台免费建网站
  • 青岛专业做网站的公司秦洁婷seo博客
  • 如何布置网站网易最新消息新闻
  • 网站建设价格情况产品推广的渠道
  • 企业建站为什么选择网站定制百度新闻