华为OD机试真题 JavaScript 实现【找车位】【2023 B卷 100分】,附详细解题思路

在这里插入图片描述

一、题目描述

停车场有一横排车位,0代表没有停车,1代表有车。至少停了一辆车在车位上,也至少有一个空位没有停车。

为了防剐蹭,需为停车人找到一个车位,使得距停车人的车最近的车辆的距离是最大的,返回此时的最大距离。

二、输入描述

1、一个用半角逗号分割的停车标识字符串,停车标识为0或1,0为空位,1为已停车。

2、停车位最多100个。

三、输出描述

输出一个整数记录最大距离。

四、解题思路

  1. 读取输入的停车位状态字符串,使用逗号分割得到停车位数组;
  2. 初始化计数变量 count 为 0,最大距离变量 max 为 0,左侧标记变量 left 为 0;
  3. 遍历停车位数组,对于每个停车位:
    • 如果停车位是空位(0),将计数变量 count 加1;
    • 如果停车位是已停车位(1):
      • 如果左侧标记 left 为 0,说明当前停车位是第一个停车位,更新最大距离为 count 的两倍,设置左侧标记 left 为 1;
      • 如果左侧标记 left 不为 0,说明当前停车位不是第一个停车位,更新最大距离为当前最大距离和 count 中的较大值;
      • 将计数变量 count 重置为 0。
  4. 如果停车位数组的最后一个停车位是空位(0),更新最大距离为 count 的两倍;
  5. 最大距离除以 2,然后向上取整,得到最大距离的结果;
  6. 输出最大距离结果。

五、JavaScript算法源码

function findMaxDistance(input) {
    // 读取输入的停车位状态字符串,使用逗号分割得到停车位数组
    const arr = input.split(",");
    // 计数
    let count = 0;
    // 最大距离
    let max = 0;
    // 左侧标记
    let left = 0;

    // 遍历停车位数组
    for (let i = 0; i < arr.length; i++) {
        // 如果停车位是空位(0),将计数变量 count 加1
        if (arr[i] === "0") {
            count++;
        } else {
            // 如果左侧标记 left 为 0,说明当前停车位是第一个停车位,
            // 更新最大距离为 count 的两倍,设置左侧标记 left 为 1
            if (left === 0) {
                max = count * 2;
                left = 1;
            } else {
                // 如果左侧标记 left 不为 0,说明当前停车位不是第一个停车位,
                // 更新最大距离为当前最大距离和 count 中的较大值
                max = Math.max(max, count);
            }
            // 将计数变量 count 重置为 0
            count = 0;
        }
    }

    // 如果停车位数组的最后一个停车位是空位(0),更新最大距离为 count 的两倍
    if (arr[arr.length - 1] === "0") {
        max = Math.max(max, count * 2);
    } else {
        max = Math.max(max, count);
    }

    // 最大距离除以 2,然后向上取整,得到最大距离的结果
    return Math.ceil(max / 2);
}

六、效果展示

1、输入

1,0,0,0,0,1,0,0,1,0,1

2、输出

2

3、说明

当车停在第3个位置上时,离其最近的的车距离为2(1到3)。

当车停在第4个位置上时,离其最近的的车距离为2(4到6)。

其他位置距离为1。

因此最大距离为2。

华为OD机试真题 JavaScript 实现【找车位】【2023 B卷 100分】,附详细解题思路_第1张图片


下一篇:华为OD机试真题 Java 实现【跳房子II】【2023 B卷 100分】,附详细解题思路

本文收录于,华为OD机试(JAVA)(2022&2023)

本专栏包含了最新最全的2023年华为OD机试真题,有详细的分析和Java解答。已帮助1000+同学顺利通过OD机考。专栏会持续更新,每天在线答疑。

在这里插入图片描述

你可能感兴趣的:(搬砖工逆袭Java架构师,华为od,javascript,java,前端,vue.js)