leetcode
leetcode 1801 ~ 1850
买票需要的时间

买票需要的时间

难度:

标签:

题目描述

代码结果

运行时间: 24 ms, 内存: 16.0 MB


// Java Stream Solution
// 思路:
// 使用流的操作计算时间,总和的位置 k 之前和之后的人的买票时间。

import java.util.stream.IntStream;

public class Solution {
    public int timeRequiredToBuy(int[] tickets, int k) {
        return IntStream.range(0, tickets.length)
                        .map(i -> i <= k ? Math.min(tickets[i], tickets[k]) : Math.min(tickets[i], tickets[k] - 1))
                        .sum();
    }
}

解释

方法:

这个题解采用了一种简单直观的方法。对于队列中的每一个人,我们需要计算他们买票所需的时间。如果这个人在k位置之前(包括k位置),那么他们将买到tickets[k]张票,因为当轮到k位置的人时,队列前面的人都会买到相同数量的票。如果这个人在k位置之后,那么他们将买到tickets[k]-1张票,因为当轮到k位置的人买完票后,这个人还需要再排队一次。

时间复杂度:

O(n)

空间复杂度:

O(1)

代码细节讲解

相关问题