The problem had a solution that was more optimal than the simulation so I knew you were going to make a video. Here's the java solution class Solution { public int timeRequiredToBuy(int[] tickets, int k) { int rc = 0; for (int i=0;i
@yuriaragao19106 ай бұрын
Pretty neat solution! I solved it with a different logic, maybe yours is more straightforward, but I will share here anyways: The idea is to start res as the length of the queue multiplied by the number of tickets the kth person wants to buy (this is the upper bound of the result), then we traverse the tickets array decreasing res checking two conditions: 1. If tickets[i] is smaller than tickets[k] then decrease res by their difference (we counted tickets[i] too many times) 2. if i > k and tickets[i] >= tickets[k] decrease the result by 1, since the ith person is behind the kth person in the queue Here is the solution in Python: class Solution: def timeRequiredToBuy(self, tickets: List[int], k: int) -> int: res = len(tickets) * tickets[k] for i in range(len(tickets)): if tickets[i] < tickets[k]: res += tickets[i] - tickets[k] elif i > k: res -= 1 return res
@Logeshwar-s7m6 ай бұрын
please make a playlist for leetcode database problems
@dilmurodabdusamadov55726 ай бұрын
I tried to come up with mathy approach but it didn't fit well :) class Solution: def timeRequiredToBuy(self, tickets: List[int], k: int) -> int: more, less = 0, 0 for i in range(len(tickets)): if tickets[i] < tickets[k]: less += tickets[i] else: more += 1 return tickets[k] * more + less Thank you for the explanation tho!
@DebopriyoBasu6 ай бұрын
Great explanation! Here is my JavaScript solution using the same logic: const timeRequiredToBuy = (tickets, k) => { let time = 0; const len = tickets.length; for (let i = 0; i < len; i++) { if (i
@CrabGuyy6 ай бұрын
amazing, in javascript you could also do it in a more functional way with the "reduce" function of arrays, if you didn't know i would suggest you look into it since its pretty useful for this case
@rauffares35586 ай бұрын
Great Explanation
@AbhijeetMuneshwar6 ай бұрын
Thanks for this easy explaination 🙏🏼
@indianundergraddiaries6 ай бұрын
Here's my Python code, I feel this maybe more intuitive and straight forward class Solution: def timeRequiredToBuy(self, tickets: List[int], k: int) -> int: count = 0 while True: for i in range(len(tickets)): if tickets[k] == 0: return count elif tickets[i] == 0: continue tickets[i] -= 1 count += 1
@MP-ny3ep6 ай бұрын
Great explanation as always. Thank you
@deepakkanshetti141318 күн бұрын
Really neat solution 👍
@adrianharo65866 ай бұрын
I just did this on Java. Using a while and nested for loop
@comatosesperrow6 ай бұрын
I feel like there's a O(1) math solution somewhere here. Any ideas?
@deathbombs6 ай бұрын
I solved 450 qs, couldn't optimize past simulation. Have tips or im just dumb?
@yang58436 ай бұрын
Reflect on the problem, every person in front of k has to be able to buy student[k] tickets, and every person after k must be able to buy student[k] - 1 tickets.
@s8x.6 ай бұрын
how did u learn everything
@spsc076 ай бұрын
someone already said life lessons and hashmap
@s8x.6 ай бұрын
@@spsc07 neet
@MaazMalik-c9o6 ай бұрын
Here is my solution in java : class Solution { public int timeRequiredToBuy(int[] tickets, int k) { int l=tickets.length; int val=tickets[k]; int time=0; for(int i=0;i
@dragon_id_6 ай бұрын
did every1 use "nums" instead of tickets at first !!