787. K 站中转内最便宜的航班

描述

有 n 个城市通过一些航班连接。给你一个数组 flights ,其中 flights[i] = [fromi, toi, pricei] ,表示该航班都从城市 fromi 开始,以价格 pricei 抵达 toi。

现在给定所有的城市和航班,以及出发城市 src 和目的地 dst,你的任务是找到出一条最多经过 k 站中转的路线,使得从 src 到 dst 的 价格最便宜 ,并返回该价格。 如果不存在这样的路线,则输出 -1。

示例 1:

输入:
n = 3, edges = [[0,1,100],[1,2,100],[0,2,500]]
src = 0, dst = 2, k = 1
输出: 200
解释:
城市航班图如下

从城市 0 到城市 2 在 1 站中转以内的最便宜价格是 200,如图中红色所示。
示例 2:

输入:
n = 3, edges = [[0,1,100],[1,2,100],[0,2,500]]
src = 0, dst = 2, k = 0
输出: 500
解释:
城市航班图如下

从城市 0 到城市 2 在 0 站中转以内的最便宜价格是 500,如图中蓝色所示。

提示:

1 <= n <= 100
0 <= flights.length <= (n * (n - 1) / 2)
flights[i].length == 3
0 <= fromi, toi < n
fromi != toi
1 <= pricei <= 104
航班没有重复,且不存在自环
0 <= src, dst, k < n
src != dst

分析

Bellman Ford 求解有限制的最短路问题
动态规划思想:
用一个数组表示src到各个点的最短路径。
双层循环,外层是循环的次数,做k+1此循环,内存循环是在上一次循环的基础上遍历所有的边,然后计算src到各个节点的最短距离。

class Solution {public int findCheapestPrice(int n, int[][] flights, int src, int dst, int k) {int[] dp = new int[n];int INF = 100 * 10000;Arrays.fill(dp,INF);//起始节点要赋值为0,否则后面的所有的循环取最小值都是INF,给src赋值为0的意义是,能够让所有与src的连接的节点的最短路径,与src不连接的节点都还会是INF。dp[src] = 0;//最外层的循环是计算,从src最多走k+1步能够走到的节点的最短值。for (int i = 0; i <= k; i++) {int[] clone = Arrays.copyOf(dp,dp.length);// int[] clone = dp.clone();for (int[] arr : flights) {dp[arr[1]] = Math.min(dp[arr[1]], clone[arr[0]] + arr[2]);}}return dp[dst] == INF ? -1 : dp[dst];}
}

0图论/动态规划中等 LeetCode787. K 站中转内最便宜的航班相关推荐

  1. LeetCode——787. K 站中转内最便宜的航班(Cheapest Flights Within K Stops)[中等]——分析及代码(Java)

    LeetCode--787. K 站中转内最便宜的航班[Cheapest Flights Within K Stops][中等]--分析及代码[Java] 一.题目 二.分析及代码 1. 动态规划 ( ...

  2. 787. K 站中转内最便宜的航班(动态规划)

    package com.wsq.leetcode; /*** 787. K 站中转内最便宜的航班* @author wsq* @date 2020/10/21有 n 个城市通过 m 个航班连接.每个航 ...

  3. 动态规划——K 站中转内最便宜的航班

    问题来源:leetcode 787. K 站中转内最便宜的航班 有 n 个城市通过 m 个航班连接.每个航班都从城市 u 开始,以价格 w 抵达 v. 现在给定所有的城市和航班,以及出发城市 src ...

  4. leetcode每日一题系列——787. K 站中转内最便宜的航班

    787. K 站中转内最便宜的航班 难度中等346收藏分享切换为英文接收动态反馈 有 n 个城市通过一些航班连接.给你一个数组 flights ,其中 flights[i] = [fromi, toi ...

  5. 【力扣】787. K 站中转内最便宜的航班加权——有向图最短路径

    前言 我感觉这题比较有代表性,所以记录一下,这题是加权有向图中求最短路径的问题. 题目 787. K 站中转内最便宜的航班 动态规划 假设有一条路径是[src, i, ..., j, dst],解法一 ...

  6. 力扣787. K 站中转内最便宜的航班

    有 n 个城市通过一些航班连接.给你一个数组 flights ,其中 flights[i] = [fromi, toi, pricei] ,表示该航班都从城市 fromi 开始,以价格 pricei ...

  7. 787. K 站中转内最便宜的航班(加权有向图的最短路径)

    题目:787. K 站中转内最便宜的航班 两种方法: 方法一: 思路: 加权图的最短路径 1. 首先将航线转化为字典形式存储.(当前城市–下一城市–费用) 2. 建一个双向队列,元素为元组形式.(当前 ...

  8. 【Bellman-Ford算法(求解最短路径约束问题)】787. K 站中转内最便宜的航班——算法分析

    [Bellman-Ford算法(求解最短路径约束问题)]787. K 站中转内最便宜的航班--算法分析 787. K 站中转内最便宜的航班 有 n 个城市通过一些航班连接.给你一个数组 flights ...

  9. 365天挑战LeetCode1000题——Day 103 400题 检查二进制字符串字段 最大子序列交替和 最低票价 K 站中转内最便宜的航班

    400题,用时103天,平均3.88题/天,预计154天,也就是5个月后完成目标 1784. 检查二进制字符串字段 代码实现(模拟) class Solution {public:bool check ...

最新文章

  1. 20172318 2017-2018-2 《程序设计与数据结构》实验3报告
  2. python的QT5:如何用QT5实现菜单
  3. ELV局部视图与差分隐私【敏感度到底怎么理解】【下】
  4. platform_driver_register()--如何match之后调用probe
  5. python中int什么意思_python3中int(整型)的使用教程
  6. .net连接DB2的异常SQL0666 - SQL query exceeds specified time limit or storage limit.错误处理
  7. ElasticSearch预警服务-Watcher详解-Schedule配置
  8. mysql5.7.12安装_mysql 5.7.12 winx64手动安装教程
  9. CRC-16的原理和实现
  10. applicationhostconfig
  11. floodlight make the VMs can not getDHCP IP address
  12. 谷歌浏览器一直显示弹框登陆代理解决方法
  13. 如何写好一个打动投资人的计划书
  14. 用python做一个好玩的数字炸弹游戏
  15. PPTP(Point to Point Tunneling Protocol),即点对点隧道协议。
  16. 如何在 Windows 右键菜单中新建自己想要的文件格式
  17. 福建计算机等级考试停考,惊闻|福建省要停考计算机等级考试?!
  18. 如何在ubuntu 18.04上设置设置sougo拼音输入法
  19. 电脑散热,夏天来了 电脑散热风扇太吵怎么办?
  20. 世界时区与北京时间的时差表

热门文章

  1. IT的你,批量将pdf转图片,还要啥付费软件
  2. MySQL-表管理及数据类型 第二天
  3. 计算机待机快捷键,电脑待机快捷键【解答方式】
  4. 中基鸿业30岁女性的理财之道
  5. Android学习笔记19:ImageView实现图片适屏与裁剪
  6. 分享奇葩的Google使用方法
  7. 项目管理PBSWBS
  8. HTTPD入门和常见配置
  9. 激光溶脂效果好吗安全吗,肚子抽脂肪对身体有害吗
  10. UE4中窗口模式切换