Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >2021-12-04:公交路线。给你一个数组 routes ,表示一系列公交线路,其中每个 routes[i] 表示一条公交线路

2021-12-04:公交路线。给你一个数组 routes ,表示一系列公交线路,其中每个 routes[i] 表示一条公交线路

作者头像
福大大架构师每日一题
发布于 2021-12-09 12:35:14
发布于 2021-12-09 12:35:14
29800
代码可运行
举报
运行总次数:0
代码可运行

2021-12-04:公交路线。给你一个数组 routes ,表示一系列公交线路,其中每个 routes[i] 表示一条公交线路,第 i 辆公交车将会在上面循环行驶。

例如,路线 routes[0] = [1, 5, 7] 表示第 0 辆公交车会一直按序列 1 -> 5 -> 7 -> 1 -> 5 -> 7 -> 1 -> ... 这样的车站路线行驶。

现在从 source 车站出发(初始时不在公交车上),要前往 target 车站。期间仅可乘坐公交车。

求出 最少乘坐的公交车数量 。如果不可能到达终点车站,返回 -1 。

来自力扣815。

来自三七互娱。

答案2021-12-04:

以公交线做宽度优先遍历。

代码用golang编写。代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package main

import "fmt"

func main() {
    routes := [][]int{{1, 2, 7}, {3, 6, 7}}
    source := 1
    target := 6
    ret := numBusesToDestination(routes, source, target)
    fmt.Println(ret)
}

func numBusesToDestination(routes [][]int, source, target int) int {
    if source == target {
        return 0
    }
    n := len(routes)
    // key : 车站
    // value : list -> 该车站拥有哪些线路!
    map0 := make(map[int][]int)
    for i := 0; i < n; i++ {
        for j := 0; j < len(routes[i]); j++ {
            if _, ok := map0[routes[i][j]]; !ok {
                map0[routes[i][j]] = make([]int, 0)
            }
            map0[routes[i][j]] = append(map0[routes[i][j]], i)
        }
    }
    queue := make([]int, 0)
    set := make([]bool, n)
    for _, route := range map0[source] {
        queue = append(queue, route)
        set[route] = true
    }
    len0 := 1
    for len(queue) > 0 {
        nextLevel := make([]int, 0)
        for _, route := range queue {
            bus := routes[route]
            for _, station := range bus {
                if station == target {
                    return len0
                }
                for _, nextRoute := range map0[station] {
                    if !set[nextRoute] {
                        nextLevel = append(nextLevel, nextRoute)
                        set[nextRoute] = true
                    }
                }
            }
        }
        queue = nextLevel
        len0++
    }
    return -1
}

执行结果如下:

***

[左神java代码](https://gitee.com/moonfdd/coding-for-great-offer/blob/main/src/class36/Code12_BusRoutes.java)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-12-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 福大大架构师每日一题 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
2021-12-04:公交路线。给你一个数组 routes ,表示一系列
2021-12-04:公交路线。给你一个数组 routes ,表示一系列公交线路,其中每个 routesi 表示一条公交线路,第 i 辆公交车将会在上面循环行驶。
福大大架构师每日一题
2021/12/04
1790
LeetCode 815. 公交路线(最少换乘,BFS)
我们有一系列公交路线。每一条路线 routes[i] 上都有一辆公交车在上面循环行驶。 例如,有一条路线 routes[0] = [1, 5, 7],表示第一辆 (下标为0) 公交车会一直按照 1->5->7->1->5->7->1->… 的车站路线行驶。
Michael阿明
2020/07/13
1.2K0
【图论搜索专题】并查集优化双向 BFS
给你一个数组 routes ,表示一系列公交线路,其中每个 routes[i] 表示一条公交线路,第 i 辆公交车将会在上面循环行驶。
宫水三叶的刷题日记
2021/12/13
7270
【每日算法Day 62】LeetCode 815. 公交路线
我们有一系列公交路线。每一条路线 上都有一辆公交车在上面循环行驶。例如,有一条路线 ,表示第一辆(下标为 )公交车会一直按照 的车站路线行驶。
godweiyang
2020/03/24
6250
腾讯位置服务地图SDK公交路线规划应用示例
今天分享腾讯位置服务地图SDK检索功能的应用,使用公交路线规划功能实现Demo,暂时还没有做同一路线不同公交线路切换功能(后续完善此Demo)。
腾讯位置服务
2020/12/11
9760
Leetcode 815. Bus Routes
文章作者:Tyan 博客:noahsnail.com | CSDN | 简书
Tyan
2021/07/08
3750
数学建模——农村公交与异构无人机协同配送优化
农村地区因其复杂多变的地形、稀疏的道路网络以及分散的配送点,传统配送方式效率低下,成本高昂,难以满足日益增长的配送需求。随着无人机技术迅猛发展和在物流领域的广泛应用,一种全新的配送模式应运而生——农村公交与异构无人机协同配送模式。
小李很执着
2024/06/15
1.8K1
数学建模——农村公交与异构无人机协同配送优化
利用Python数据处理进行公交车到站时间预测(一)
id  int  id编号 type  int   41表示站间数据,42中间站进出数据 43始末站进出数据 route_id int  线路ID号,10454,10069,120881 bus_id  varchar  车辆编号 station_id varchar  站点编号 lon  decimal  经度 lat  decimal   纬度 speed  decimal  速度 direction decimal  方向 gpsflag  int  gps状态  0有效,1无效 updownflag int  上下行,0上行,1下行 inoutflag int  进出站,0进站,1出站 runningflag int  运营状态,0正常运营,1停止运营 onlineflag int  在线状态,0正常状态,1不在线 create_time timestamp  gps时间
钱塘小甲子
2019/01/29
1.6K0
公交车总迟到?你大概掉进了“等待时间悖论&quot;
你到了车站,准备搭乘声称每10分钟一班的公交车。你盯着你的手表留意着时间,结果公交车终于在11分钟后到来。
磐创AI
2018/12/18
4110
有了BFS,困难的谜题也不过如此,一个模板就够了
BFS,其英文全称是Breadth First Search,中文叫广度优先搜索,从根节点开始遍历,然后遍历根节点的子节点,所有子节点访问到后再遍历子节点的子节点,也就是根据深度每一层每一层的遍历。一般会用到队列和字典这两种数据结构。队列用于存储枚举的节点集合,字典用于记录节点是否访问过,用于排重。
兜兜转转
2023/03/06
3000
数学-建模———A 农村公交与异构无人机协同配送优化
农村地区因其复杂多变的地形、稀疏的道路网络以及分散的配送点,传统配送方式效率低下,成本高昂,难以满足日益增长的配送需求。随着无人机技术迅猛发展和在物流领域的广泛应用,一种全新的配送模式应运而生——农村公交与异构无人机协同配送模式。
小李很执着
2024/06/15
3.3K1
数学-建模———A 农村公交与异构无人机协同配送优化
【愚公系列】2022年04月 微信小程序-项目篇(公交查询)-01周边站点
小程序的周边站点是实时获取当前登录用户的位置信息,进而给出附件公交车站信息,以便用户选择乘车方案。
愚公搬代码
2022/04/21
4670
【愚公系列】2022年04月 微信小程序-项目篇(公交查询)-01周边站点
腾讯地图手把手教你实现微信小程序路线规划
本文旨在以mpvue框架为基础,探讨地图类小程序的开发思路。 原作者利用mpvue + 腾讯地图的能力做了一个地铁路线规划的小程序,主要提供全球主要城市的地铁线网图及旅游介绍,其中国内城市支持查看地图和路线规划。
腾讯位置服务
2021/03/05
1.6K0
2021-11-12:前 K 个高频元素。给你一个整数数组 nums 和
2021-11-12:前 K 个高频元素。给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。提示:1 <= nums.length <= 105,k 的取值范围是 1, 数组中不相同的元素的个数,题目数据保证答案唯一,换句话说,数组中前 k 个高频元素的集合是唯一的。进阶:你所设计算法的时间复杂度 必须 优于 O(n log n) ,其中 n 是数组大小。力扣347。
福大大架构师每日一题
2021/11/12
2340
LeetCode 2021 力扣杯全国秋季编程大赛(第384名)
2021.9.11,周六 比赛之前:早上去交大看看,本科毕业10年了,由于限流,校园里没有多少回校的校友。 逛了逛,跟太太和的她的同学一起吃了个午饭,饭后准备去送孩子上声乐课,到了上课的地方,已经过了3点,比赛已经开始了。。。 我想是再开20分钟回家比赛(呵呵,想省停车费),还是在孩子上课的地方打比赛呢?(我的积分啊,不能掉的太厉害) 我果断停车,上楼,找个插座的地方,接通电源,开始比赛,比赛已经开始了10多分钟。 题目还算比较简单,第四题想到了是二分查找,中间出了点岔子,17:34 做出来了,但是什么,17:30 比赛就结束了。白高兴了一会。
Michael阿明
2022/01/07
6220
LeetCode 2021 力扣杯全国秋季编程大赛(第384名)
掌握这7种Python数据图表的区别,你就是大牛数据分析师!
Python 的科学栈相当成熟,各种应用场景都有相关的模块,包括机器学习和数据分析。数据可视化是发现数据和展示结果的重要一环,只不过过去以来,相对于 R 这样的工具,发展还是落后一些。 幸运的是,过去几年出现了很多新的Python数据可视化库,弥补了一些这方面的差距。matplotlib 已经成为事实上的数据可视化方面最主要的库,此外还有很多其他库,例如vispy,bokeh, seaborn, pyga, folium 和 networkx,这些库有些是构建在 matplotlib 之上,还有些有其他
小小科
2018/05/03
1.6K0
掌握这7种Python数据图表的区别,你就是大牛数据分析师!
2023-10-18:用go语言,给定一个数组arr,长度为n,表示有0~n-1号设备, arr[i]表示i号设备的型号,型号的
2023-10-18:用go语言,给定一个数组arr,长度为n,表示有0~n-1号设备,
福大大架构师每日一题
2023/10/23
3480
2023-10-18:用go语言,给定一个数组arr,长度为n,表示有0~n-1号设备, arr[i]表示i号设备的型号,型号的
气象编程 | 科学计算库Scipy简易入门
Scipy是一个用于数学、科学、工程领域的常用软件包,可以处理插值、积分、优化、图像处理、常微分方程数值解的求解、信号处理等问题。它用于有效计算Numpy矩阵,使Numpy和Scipy协同工作,高效解决问题。
气象学家
2020/07/20
1.7K0
气象编程 | 科学计算库Scipy简易入门
中英翻译谷歌论文:Percolator
Updating an index of the web as documents are crawled requires continuously transforming a large repository of existing documents as new documents arrive. This task is one example of a class of data processing tasks that transform a large repository of data via small, independent mutations. These tasks lie in a gap between the capabilities of existing infrastructure. Databases do not meet the storage or throughput requirements of these tasks: Google’s indexing system stores tens of petabytes of data and processes billions of updates per day on thousands of machines. MapReduce and other batch-processing systems cannot process small updates individually as they rely on creating large batches for efficiency.
luozhiyun
2021/10/09
1.7K0
中英翻译谷歌论文:Percolator
精通 TensorFlow 1.x:11~15
TensorFlow 模型在开发环境中经过训练和验证。一旦发布,它们需要托管在某个地方,提供用工程师和软件工程师使用,以集成到各种应用中。 TensorFlow 为此提供了一个高表现服务器,称为 TensorFlow 服务。
ApacheCN_飞龙
2023/04/23
1.7K0
推荐阅读
相关推荐
2021-12-04:公交路线。给你一个数组 routes ,表示一系列
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验