• [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 all pairs of neighboring stops where distance[i] is the distance between the stops number i and (i + 1) % n.

    The bus goes along both directions i.e. clockwise and counterclockwise.

    Return the shortest distance between the given start and destination stops.

    Example 1:

    Input: distance = [1,2,3,4], start = 0, destination = 1
    Output: 1
    Explanation: Distance between 0 and 1 is 1 or 9, minimum is 1.

    Example 2:

    Input: distance = [1,2,3,4], start = 0, destination = 2
    Output: 3
    Explanation: Distance between 0 and 2 is 3 or 7, minimum is 3.

    Example 3:

    Input: distance = [1,2,3,4], start = 0, destination = 3
    Output: 4
    Explanation: Distance between 0 and 3 is 6 or 4, minimum is 4.

    Constraints:

    • 1 <= n <= 10^4
    • distance.length == n
    • 0 <= start, destination < n
    • 0 <= distance[i] <= 10^4

    公交站间的距离。

    环形公交路线上有 n 个站,按次序从 0 到 n - 1 进行编号。我们已知每一对相邻公交站之间的距离,distance[i] 表示编号为 i 的车站和编号为 (i + 1) % n 的车站之间的距离。

    环线上的公交车都可以按顺时针和逆时针的方向行驶。

    返回乘客从出发点 start 到目的地 destination 之间的最短距离。 

    来源:力扣(LeetCode)
    链接:https://leetcode.cn/problems/distance-between-bus-stops
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    题目不难,但是做法很巧妙。题目要求计算的是两点之间的最短距离,最短距离的计算有两种方式,一种是顺时针,一种是逆时针。顺时针很好算,逆时针的算法是整圈的距离 - 顺时针的距离

    时间O(n)

    空间O(1)

    Java实现

     1 class Solution {
     2     public int distanceBetweenBusStops(int[] distance, int start, int destination) {
     3         int total = 0;
     4         for (int dis : distance) {
     5             total += dis;
     6         }
     7         
     8         if (start > destination) {
     9             int temp = start;
    10             start = destination;
    11             destination = temp;
    12         }
    13         int dis1 = 0;
    14         for (int i = start; i < destination; i++) {
    15             dis1 += distance[i];
    16         }
    17         return Math.min(dis1, total - dis1);
    18     }
    19 }

    LeetCode 题目总结

  • 相关阅读:
    《Programming WPF》翻译 第8章 1.动画基础
    一些被遗忘的设计模式
    《Programming WPF》翻译 第4章 数据绑定
    《Programming WPF》翻译 第3章 控件
    《Programming WPF》翻译 第5章 样式和控件模板
    《Programming WPF》翻译 第7章 绘图
    《Programming WPF》翻译 第9章 自定义控件
    《Programming WPF》翻译 第7章 绘图 (2)
    《Programming WPF》翻译 第8章 前言
    关于Debug和Release之本质区别
  • 原文地址:https://www.cnblogs.com/cnoodle/p/16513774.html
Copyright © 2020-2023  润新知