【刷题日记】1184. 公交站间的距离

简介: 好久不刷题,没有锻炼思维,感觉脑袋都要生锈了,刷题感觉还是要从简单题刷题才能慢慢找到感觉

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第2天,点击查看活动详情

本次刷题日记的第 79 篇,力扣题为:1184. 公交站间的距离

一、题目描述:

好久不刷题,没有锻炼思维,感觉脑袋都要生锈了,刷题感觉还是要从简单题刷题才能慢慢找到感觉

就想面试一样,好久不面试,前几次面试大概率都是用来练手的

今天开始来刷一个简单的题,公交车之间的距离

image.png

二、这道题考察了什么思想?你的思路是什么?

看这个题 ,其实和我们平日里面的生活还是息息相关的,例如我们到市区里面坐公交车,如果是那种环形的公交车,我们在判断从正向走还是反向走的时候,可能生活中,我们是根据车站的个数来判断哪边近哪边远的

但是今天这个题更加的明确,题目给出 n 个公交车站,分别编号为 0 到 n-1,并且给出了一个数组,distance[i] ,表示从 i 车站,到 i+1%n 的车站距离

题目要求我们,找到 start 车站到 destination 车站最近的距离

分析

根据题中,我们可以知道,对于环形的车站,很明确,要么正向,要么反向,就目前来看就只有 2 条路,其实对于我们计算起来并不复杂

例如题目中给出的例子,有 4 个车站,分别是 0,1,2,3

车站编号 0 1 2 3
当前车站到下一个车站的距离 1 2 3 4

例如,我们需要找到 1 号车站到 3 号车站的距离,

image.png

正向:2+3 = 5

反向:1+4 = 5

这么看来,正向反向都可以

其实这么看来,我们在计算的时候,只需要计算 start 到 destination 的距离 num1, 和计算 destination 到 start 的距离 num2,最后取一个最小值即可

换句话说就是,start -> destination 中间经过的距离为 num1,destination -> start 中间经过的距离为 num2 ,咱们只需要遍历一次 distance 数组就可以得出结论了

三、编码

根据上述逻辑和分析,我们就可以翻译成如下代码,一起愉快编码吧

编码如下:

func distanceBetweenBusStops(distance []int, start int, destination int) int {
    // 咱们先确保 start 的值是一定小于 destination 的
    if start > destination {
        start, destination = destination, start
    }
    // 定义 2 个值,num1 表示正向的距离,num2 表示反向的距离
    var (
        num1    int
        num2    int
    )
    for i, des := range distance {
        if start <= i && i<destination {
            num1 += des
        }else{
            num2 += des
        }
    }
    return min(num1, num2)
}
func min(a, b int) int {
    if a < b {
        return a
    }
    return b
}

四、总结:

开篇的题用来练手,虽然简单,但是我们也可以去练习思考方式,以及做题的感觉

本题做法时间复杂度是 O(n) , 咱们遍历了一遍 distance 数组,空间复杂度是 O(1) ,我们引入的空间消耗属于常数级别的

image.png

原题地址:1184. 公交站间的距离

今天就到这里,学习所得,若有偏差,还请斧正

欢迎点赞,关注,收藏

朋友们,你的支持和鼓励,是我坚持分享,提高质量的动力

image.png

好了,本次就到这里

技术是开放的,我们的心态,更应是开放的。拥抱变化,向阳而生,努力向前行。

我是阿兵云原生,欢迎点赞关注收藏,下次见~

相关文章
|
Prometheus Kubernetes 监控
容器服务ACK常见问题之pod设置securityContext调整参数失败如何解决
容器服务ACK(阿里云容器服务 Kubernetes 版)是阿里云提供的一种托管式Kubernetes服务,帮助用户轻松使用Kubernetes进行应用部署、管理和扩展。本汇总收集了容器服务ACK使用中的常见问题及答案,包括集群管理、应用部署、服务访问、网络配置、存储使用、安全保障等方面,旨在帮助用户快速解决使用过程中遇到的难题,提升容器管理和运维效率。
|
7月前
|
存储 人工智能 算法
Magic 1-For-1:北大联合英伟达推出的高质量视频生成量化模型,支持在消费级GPU上快速生成
北京大学、Hedra Inc. 和 Nvidia 联合推出的 Magic 1-For-1 模型,优化内存消耗和推理延迟,快速生成高质量视频片段。
374 3
Magic 1-For-1:北大联合英伟达推出的高质量视频生成量化模型,支持在消费级GPU上快速生成
|
8月前
|
测试技术 Android开发 开发者
【03】优雅草央千澈详解关于APP签名以及分发-上架完整流程-第三篇安卓APP上架华为商店后面的步骤-华为应用商店相对比较麻烦一些-华为商店安卓上架
【03】优雅草央千澈详解关于APP签名以及分发-上架完整流程-第三篇安卓APP上架华为商店后面的步骤-华为应用商店相对比较麻烦一些-华为商店安卓上架
134 16
|
10月前
|
Oracle 关系型数据库 MySQL
Centos7下图形化部署单点KFS同步工具并将Oracle增量同步到KES
Centos7下图形化部署单点KFS同步工具并将Oracle增量同步到KES
Centos7下图形化部署单点KFS同步工具并将Oracle增量同步到KES
|
应用服务中间件 Shell nginx
Docker容器操作基础命令
关于Docker容器操作基础命令的教程,涵盖了从启动、查看、删除容器到端口映射和容器信息获取的一系列常用命令及其使用方法。
339 14
|
存储 分布式计算 Hadoop
|
存储 传感器 编解码
element-ui时间选择器限制只能点击不让输入(整理)
element-ui时间选择器限制只能点击不让输入(整理)
|
监控 Linux 网络安全
在Linux中,如何进行网络资源的隔离?
在Linux中,如何进行网络资源的隔离?
|
JavaScript 前端开发 数据安全/隐私保护
无感刷新token(vue3与nodejs版本)
无感刷新token(vue3与nodejs版本)