首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
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
31100
代码可运行
举报
运行总次数: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
1890
LeetCode 815. 公交路线(最少换乘,BFS)
我们有一系列公交路线。每一条路线 routes[i] 上都有一辆公交车在上面循环行驶。 例如,有一条路线 routes[0] = [1, 5, 7],表示第一辆 (下标为0) 公交车会一直按照 1->5->7->1->5->7->1->… 的车站路线行驶。
Michael阿明
2020/07/13
1.3K0
【图论搜索专题】并查集优化双向 BFS
给你一个数组 routes ,表示一系列公交线路,其中每个 routes[i] 表示一条公交线路,第 i 辆公交车将会在上面循环行驶。
宫水三叶的刷题日记
2021/12/13
7410
【每日算法Day 62】LeetCode 815. 公交路线
我们有一系列公交路线。每一条路线 上都有一辆公交车在上面循环行驶。例如,有一条路线 ,表示第一辆(下标为 )公交车会一直按照 的车站路线行驶。
godweiyang
2020/03/24
6490
腾讯位置服务地图SDK公交路线规划应用示例
今天分享腾讯位置服务地图SDK检索功能的应用,使用公交路线规划功能实现Demo,暂时还没有做同一路线不同公交线路切换功能(后续完善此Demo)。
腾讯位置服务
2020/12/11
1.1K0
Leetcode 815. Bus Routes
文章作者:Tyan 博客:noahsnail.com | CSDN | 简书
Tyan
2021/07/08
3820
数学建模——农村公交与异构无人机协同配送优化
农村地区因其复杂多变的地形、稀疏的道路网络以及分散的配送点,传统配送方式效率低下,成本高昂,难以满足日益增长的配送需求。随着无人机技术迅猛发展和在物流领域的广泛应用,一种全新的配送模式应运而生——农村公交与异构无人机协同配送模式。
小李很执着
2024/06/15
1.8K1
数学建模——农村公交与异构无人机协同配送优化
公交车总迟到?你大概掉进了“等待时间悖论&quot;
你到了车站,准备搭乘声称每10分钟一班的公交车。你盯着你的手表留意着时间,结果公交车终于在11分钟后到来。
磐创AI
2018/12/18
4330
利用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
数学-建模———A 农村公交与异构无人机协同配送优化
农村地区因其复杂多变的地形、稀疏的道路网络以及分散的配送点,传统配送方式效率低下,成本高昂,难以满足日益增长的配送需求。随着无人机技术迅猛发展和在物流领域的广泛应用,一种全新的配送模式应运而生——农村公交与异构无人机协同配送模式。
小李很执着
2024/06/15
3.4K1
数学-建模———A 农村公交与异构无人机协同配送优化
有了BFS,困难的谜题也不过如此,一个模板就够了
BFS,其英文全称是Breadth First Search,中文叫广度优先搜索,从根节点开始遍历,然后遍历根节点的子节点,所有子节点访问到后再遍历子节点的子节点,也就是根据深度每一层每一层的遍历。一般会用到队列和字典这两种数据结构。队列用于存储枚举的节点集合,字典用于记录节点是否访问过,用于排重。
兜兜转转
2023/03/06
3250
【愚公系列】2022年04月 微信小程序-项目篇(公交查询)-01周边站点
小程序的周边站点是实时获取当前登录用户的位置信息,进而给出附件公交车站信息,以便用户选择乘车方案。
愚公搬代码
2022/04/21
4840
【愚公系列】2022年04月 微信小程序-项目篇(公交查询)-01周边站点
腾讯地图手把手教你实现微信小程序路线规划
本文旨在以mpvue框架为基础,探讨地图类小程序的开发思路。 原作者利用mpvue + 腾讯地图的能力做了一个地铁路线规划的小程序,主要提供全球主要城市的地铁线网图及旅游介绍,其中国内城市支持查看地图和路线规划。
腾讯位置服务
2021/03/05
3.5K0
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
2500
LeetCode 2021 力扣杯全国秋季编程大赛(第384名)
2021.9.11,周六 比赛之前:早上去交大看看,本科毕业10年了,由于限流,校园里没有多少回校的校友。 逛了逛,跟太太和的她的同学一起吃了个午饭,饭后准备去送孩子上声乐课,到了上课的地方,已经过了3点,比赛已经开始了。。。 我想是再开20分钟回家比赛(呵呵,想省停车费),还是在孩子上课的地方打比赛呢?(我的积分啊,不能掉的太厉害) 我果断停车,上楼,找个插座的地方,接通电源,开始比赛,比赛已经开始了10多分钟。 题目还算比较简单,第四题想到了是二分查找,中间出了点岔子,17:34 做出来了,但是什么,17:30 比赛就结束了。白高兴了一会。
Michael阿明
2022/01/07
6410
LeetCode 2021 力扣杯全国秋季编程大赛(第384名)
2023-10-18:用go语言,给定一个数组arr,长度为n,表示有0~n-1号设备, arr[i]表示i号设备的型号,型号的
2023-10-18:用go语言,给定一个数组arr,长度为n,表示有0~n-1号设备,
福大大架构师每日一题
2023/10/23
3850
2023-10-18:用go语言,给定一个数组arr,长度为n,表示有0~n-1号设备, arr[i]表示i号设备的型号,型号的
气象编程 | 科学计算库Scipy简易入门
Scipy是一个用于数学、科学、工程领域的常用软件包,可以处理插值、积分、优化、图像处理、常微分方程数值解的求解、信号处理等问题。它用于有效计算Numpy矩阵,使Numpy和Scipy协同工作,高效解决问题。
气象学家
2020/07/20
1.8K0
气象编程 | 科学计算库Scipy简易入门
TensorFlow Lite,ML Kit 和 Flutter 移动深度学习:6~11
认证是任何应用中最突出的功能之一,无论它是本机移动软件还是网站,并且自从保护数据的需求以及与机密有关的隐私需求开始以来,认证一直是一个活跃的领域。 在互联网上共享的数据。 在本章中,我们将从基于 Firebase 的简单登录到应用开始,然后逐步改进以包括基于人工智能(AI)的认证置信度指标和 Google 的 ReCaptcha。 所有这些认证方法均以深度学习为核心,并提供了一种在移动应用中实现安全性的最新方法。
ApacheCN_飞龙
2023/04/27
24.9K0
TensorFlow Lite,ML Kit 和 Flutter 移动深度学习:6~11
[PHP] 2018年终总结
========================================================================== 2018年12月29日 记录:
唯一Chat
2019/09/10
2.8K0
Python3 OpenCV4 计算机视觉学习手册:6~11
与人眼和大脑相似,OpenCV 可以检测图像的主要特征并将其提取到所谓的图像描述符中。 然后可以将这些特征用作数据库,从而启用基于图像的搜索。 此外,我们可以使用关键点将图像拼接在一起并组成更大的图像。 (请考虑将许多图片组合在一起以形成 360° 全景图。)
ApacheCN_飞龙
2023/04/27
4.7K0
Python3 OpenCV4 计算机视觉学习手册:6~11
推荐阅读
相关推荐
2021-12-04:公交路线。给你一个数组 routes ,表示一系列
更多 >
领券
一站式MCP教程库,解锁AI应用新玩法
涵盖代码开发、场景应用、自动测试全流程,助你从零构建专属AI助手
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档