当前位置: 面试刷题>> 飞机数 (经典算法题500道)


题目描述(补充后)

在一个机场,有多架飞机准备起飞。每架飞机都有一个起飞时间(以分钟为单位,从0开始计时),但由于机场的调度规则,两架飞机之间必须有一定的时间间隔(称为“安全间隔”)才能连续起飞,以避免任何潜在的风险。给定一个数组flightTimes,其中包含了每架飞机的起飞时间(按升序排列),以及一个整数safetyInterval表示两架飞机之间的最小安全间隔分钟数。请编写一个函数来计算在给定的条件下,机场能够容纳的最多飞机数量(即,有多少架飞机可以在不违反安全间隔的条件下起飞)。

示例输入

  • flightTimes = [0, 10, 20, 40, 60, 80]
  • safetyInterval = 15

示例输出

  • 4
    • 解释:第一架飞机在0分钟起飞,然后下一架飞机可以在15分钟之后起飞(即15分钟或之后的时间点),依此类推。在给定的起飞时间和安全间隔下,最多可以起飞4架飞机(分别在0分钟、20分钟、40分钟、60分钟)。

PHP代码示例

function maxFlights($flightTimes, $safetyInterval) {
    $count = 1; // 至少有一架飞机可以起飞
    $lastTakeoff = $flightTimes[0]; // 上一架飞机的起飞时间

    for ($i = 1; $i < count($flightTimes); $i++) {
        if ($flightTimes[$i] - $lastTakeoff >= $safetyInterval) {
            $count++;
            $lastTakeoff = $flightTimes[$i];
        }
    }

    return $count;
}

// 示例用法
$flightTimes = [0, 10, 20, 40, 60, 80];
$safetyInterval = 15;
echo maxFlights($flightTimes, $safetyInterval); // 输出 4

Python代码示例

def max_flights(flight_times, safety_interval):
    count = 1  # 至少有一架飞机可以起飞
    last_takeoff = flight_times[0]  # 上一架飞机的起飞时间

    for takeoff_time in flight_times[1:]:
        if takeoff_time - last_takeoff >= safety_interval:
            count += 1
            last_takeoff = takeoff_time

    return count

# 示例用法
flight_times = [0, 10, 20, 40, 60, 80]
safety_interval = 15
print(max_flights(flight_times, safety_interval))  # 输出 4

JavaScript代码示例

function maxFlights(flightTimes, safetyInterval) {
    let count = 1; // 至少有一架飞机可以起飞
    let lastTakeoff = flightTimes[0]; // 上一架飞机的起飞时间

    for (let i = 1; i < flightTimes.length; i++) {
        if (flightTimes[i] - lastTakeoff >= safetyInterval) {
            count++;
            lastTakeoff = flightTimes[i];
        }
    }

    return count;
}

// 示例用法
const flightTimes = [0, 10, 20, 40, 60, 80];
const safetyInterval = 15;
console.log(maxFlights(flightTimes, safetyInterval)); // 输出 4

码小课网站分享: 码小课网站中涵盖了丰富的编程学习资源和实战项目,包括算法题解、数据结构、编程语言进阶等内容,适合各个水平的开发者学习和提升。通过参与课程、阅读文章、完成练习,你可以逐步提高自己的编程能力和解决实际问题的能力。

推荐面试题