There are n people in a line queuing to buy tickets, where the 0th person is at the front of the line and the (n - 1)th person is at the back of the line.
You are given a 0-indexed integer array tickets of length n where the number of tickets that the ith person would like to buy is tickets[i].
Each person takes exactly 1 second to buy a ticket. A person can only buy 1 ticket at a time and has to go back to the end of the line (which happens instantaneously) in order to buy more tickets. If a person does not have any tickets left to buy, the person will leave the line.
Return the time taken for the person initially at position k (0-indexed) to finish buying tickets.
Example 1:
Input: tickets = [2,3,2], k = 2
Output: 6
Explanation:
Example 2:
Input: tickets = [5,1,1,1], k = 0
Output: 8
Explanation:
Constraints:
n == tickets.length1 <= n <= 1001 <= tickets[i] <= 1000 <= k < nThis approach simulates the process of each person buying their tickets. We keep track of the time spent and decrement the ticket count from each person one at a time until the k-th person has purchased all their tickets.
We continuously loop through the array, simulating each person buying one ticket at a time if they have tickets remaining. We check after each purchase if the target person (k-th) has finished buying their tickets.
C++
Java
Python
C#
JavaScript
Time Complexity: O(n * max(tickets)) where max(tickets) is the maximum tickets any person wants to buy.
Space Complexity: O(1)
This approach avoids the simulation by calculating the total time taken mathematically. For this, we traverse through each person and calculate the time based on the number of people in the queue and the minimum value between their current tickets and the tickets needed by k-th person.
This solution avoids direct simulation by calculating how many tickets each person can buy based on their position relative to k.
C++
Java
Python
C#
JavaScript
Time Complexity: O(n)
Space Complexity: O(1)
| Approach | Complexity |
|---|---|
| Simulation Approach | Time Complexity: O(n * max(tickets)) where max(tickets) is the maximum tickets any person wants to buy. |
| Mathematical Reduction Approach | Time Complexity: O(n) |
How many Leetcode problems Googlers have solved? #sde #google • The Code Skool • 92,794 views views
Watch 9 more video solutions →Practice Time Needed to Buy Tickets with our built-in code editor and test cases.
Practice on FleetCode