LeetCode.1184-公交车站之间的距离(Distance Between Bus Stops)
这是小川的第414次更新,第447篇原创
看题和准备
今天介绍的是LeetCode算法题中Easy级别的第265题(顺位题号是1184)。公交车有n个从0到n-1的车站,形成一个圆圈。我们知道所有相邻车站对之间的距离,其中distance[i]是车站i与车站(i + 1)%n之间的距离。
公交车沿两个方向运行,即顺时针和逆时针。返回给定起点和终点之间的最短距离。
输入:distance = [1,2,3,4], start = 0, destination = 1
输出:1
说明:0与1之间的距离为1或9,最小为1。
输入:distance = [1,2,3,4], start = 0, destination = 2
输出:3
说明:0和2之间的距离为3或7,最小为3。
输入:distance = [1,2,3,4], start = 0, destination = 3
输出:4
说明:0与3之间的距离为6或4,最小为4。
约束:
- 1 <= n <= 10^4
- distance.length == n
- 0 <= start, destination < n
- 0 <= distance[i] <= 10^4
第一种解法
题目的意思是求两个车站之间的距离,而所有车站组合起来形成一个环,因此可以从顺时针方向出发,也可以从逆时针方向出发。我们只需要做两件事情即可,第一是保证出发点的坐标小于终点,第二是比较顺时针出发的距离和逆时针出发的距离大小。
针对第一点,可以做个判断,如果出发点坐标大于终点坐标,就交换两元素的值,保证出发点的坐标值始终小于终点的值。
针对第二点,顺时针方向出发的距离之和很好计算,那么逆时针方向出发的距离和呢?因为整个路径是成环形,逆时针方向出发的距离和,就是用总长减去顺时针方向出发的距离和的差值。
使用两个循环,一个计算总长,一个计算从顺时针方向出发的距离和,比较顺时针出发的距离与总长减去顺时针出发的距离的大小即可。
public int distanceBetweenBusStops(int[] distance, int start, int destination) {
if (start > destination) {
int temp = start;
start = destination;
destination = temp;
}
int sum = 0;
for (int dis : distance) {
sum += dis;
}
int part = 0;
for (int i=start; i<destination; i++) {
part += distance[i];
}
return Math.min(part, sum-part);
}
第二种解法
针对第一种解法,我们可以优化下,只使用一个循环,在循环内部单独做个判断,计算顺时针方向出发的距离和。
public int distanceBetweenBusStops2(int[] distance, int start, int destination) {
if (start > destination) {
int temp = start;
start = destination;
destination = temp;
}
int sum = 0, part = 0;
for (int i=0; i<distance.length; i++) {
if (i >= start && i < destination) {
part += distance[i];
}
sum += distance[i];
}
return Math.min(part, sum-part);
}
小结
算法专题目前已更新LeetCode算法题文章271+篇,公众号对话框回复【数据结构与算法】、【算法】、【数据结构】中的任一关键词,获取系列文章合集。
以上就是全部内容,如果大家有什么好的解法思路、建议或者其他问题,可以下方留言交流,点赞、留言、转发就是对我最大的回报和支持!
LeetCode.1184-公交车站之间的距离(Distance Between Bus Stops)的更多相关文章
- 【leetcode】1184. Distance Between Bus Stops
题目如下: A bus has n stops numbered from 0 to n - 1 that form a circle. We know the distance between al ...
- sql server2008根据经纬度计算两点之间的距离
--通过经纬度计算两点之间的距离 create FUNCTION [dbo].[fnGetDistanceNew] --LatBegin 开始经度 --LngBegin 开始维度 --29.49029 ...
- 相似性度量(Similarity Measurement)与“距离”(Distance)
在做分类时常常需要估算不同样本之间的相似性度量(Similarity Measurement),这时通常采用的方法就是计算样本间的“距离”(Distance).采用什么样的方法计算距离是很讲究,甚至关 ...
- IOS 计算两个经纬度之间的距离
IOS 计算两个经纬度之间的距离 一 丶 -(double)distanceBetweenOrderBy:(double) lat1 :(double) lat2 :(double) lng1 :(d ...
- 武汉科技大学ACM :1006: 零起点学算法25——求两点之间的距离
Problem Description 输入平面坐标系中2点的坐标,输出它们之间的距离 Input 输入4个浮点数x1 y1 x2 y2,分别是点(x1,y1) (x2,y2)的坐标(多组数据) Ou ...
- 2D和3D空间中计算两点之间的距离
自己在做游戏的忘记了Unity帮我们提供计算两点之间的距离,在百度搜索了下. 原来有一个公式自己就写了一个方法O(∩_∩)O~,到僵尸到达某一个点之后就向另一个奔跑过去 /// <summary ...
- 计算两个latitude-longitude点之间的距离? (Haversine公式)
问题描述 如何计算纬度和经度指定的两点之间的距离?为了澄清,我想要距离公里;这些点使用WGS84系统,我想了解可用方法的相对准确性.最佳解决方案 这个link可能对您有帮助,因为它详细说明了使用Hav ...
- reactjs中使用高德地图计算两个经纬度之间的距离
第一步下载依赖 npm install --save react-amap 第二步,在组件中使用 import React, { Component } from 'react' import { L ...
- 相似性 similarity | Pearson | Spearman | p-value | 相关性 correlation | 距离 distance | distance measure
这几个概念不能混淆,估计大部分人都没有完全搞懂这几个概念. 看下这个,非常有用:Interpret the key results for Correlation euclidean | maximu ...
随机推荐
- 【bfs分层图 dp】hihocoder#1147 : 时空阵
最短路径树上分层dp的一类套路吧 题目大意 幽香这几天学习了魔法,准备建造一个大型的时空传送阵. 幽香现在可以在幻想乡的n个地点建造一些传送门,如果她建造了从地点a与地点b之间的传送门,那么从a到b和 ...
- connect: network is unreachable
解决方法: 在确保完善网卡驱动,以及确保将网卡驱动编译进内核后,检查 ls /etc/sysconfig/network-script/ifcfg-eth0 一.看是否在上述目录下存在ifcfg-et ...
- Centos6.5 下安装配置Apache+PHP+Mysql环境
1.准备工作 # yum -y update && yum -y install vim make cmake gcc gcc-c++ bison bison-devel ncurse ...
- docker化canal与canal-adapter
今日公司需求,需要将mysql更新实时同步到kafka中,后来又要将数据库中的一张表的变化实时同步到另一台mysql中,于是乎canal与canal-adapter紧急解决,其中踩了不少坑,下面为总结 ...
- C# 截取屏幕方法
this.Visible = false; System.Threading.Thread.Sleep(); Bitmap bit = new Bitmap(Screen.PrimaryScreen. ...
- [2019HDU多校第一场][HDU 6578][A. Blank]
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6578 题目大意:长度为\(n\)的数组要求分别填入\(\{0,1,2,3\}\)四个数中的任意一个,有 ...
- kafka接口文档和kafka教程
http://kafka.apache.org/090/javadoc/index.html?org/apache/kafka/clients/consumer/KafkaConsumer.html ...
- MyEclipse6.5的速度性能优化大提速(转)
MyEclipse是Eclipse的插件,也是一款功能强大的J2EE集成开发环境,支持代码编写.配置.测试以及除错.现在看一下MyEclipse6.5版本的速度性能优化大提速.优化MyEclipse6 ...
- Git可视化极简易教程 — Git GUI使用方法[转]
之前一直想一篇这样的东西,因为最初接触时,我也认真看了廖雪峰的教程,但是似乎我觉得讲得有点多,而且还是会给我带来很多多余且重复的操作负担,所以我希望能压缩一下它在我工作中的成本,但是搜索了一下并没有找 ...
- 【Wince-截图】对Wince进行截图
对Wince进行截图 方法一 使用Wince桌面助手对Wince进行截图 PC通过USB成功连接到手持机 打开Wince桌面助手CERHOST.exe程序 File->Capture进行截图 C ...