Time Needed to Buy Tickets - Leetcode 2073 - Python

Поделиться
HTML-код
  • Опубликовано: 28 июн 2024
  • 🚀 neetcode.io/ - A better way to prepare for Coding Interviews
    🧑‍💼 LinkedIn: / navdeep-singh-3aaa14161
    🐦 Twitter: / neetcode1
    ⭐ BLIND-75 PLAYLIST: • Two Sum - Leetcode 1 -...
    Problem Link: leetcode.com/problems/time-ne...
    0:00 - Read the problem
    0:19 - Drawing Explanation
    9:56 - Coding Explanation
    leetcode 2073
    #neetcode #leetcode #python

Комментарии • 26

  • @yang5843
    @yang5843 2 месяца назад +12

    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

  • @user-vu4ng4rb8k
    @user-vu4ng4rb8k 2 месяца назад +5

    please make a playlist for leetcode database problems

  • @indianundergraddiaries
    @indianundergraddiaries 2 месяца назад +1

    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

  • @AbhijeetMuneshwar
    @AbhijeetMuneshwar 2 месяца назад +2

    Thanks for this easy explaination 🙏🏼

  • @MP-ny3ep
    @MP-ny3ep 2 месяца назад +1

    Great explanation as always. Thank you

  • @rauffares3558
    @rauffares3558 2 месяца назад +3

    Great Explanation

  • @yuriaragao1910
    @yuriaragao1910 2 месяца назад +4

    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

  • @dilmurodabdusamadov5572
    @dilmurodabdusamadov5572 2 месяца назад +1

    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!

  • @adrianharo6586
    @adrianharo6586 2 месяца назад

    I just did this on Java. Using a while and nested for loop

  • @comatosesperrow
    @comatosesperrow 2 месяца назад

    I feel like there's a O(1) math solution somewhere here. Any ideas?

  • @DebopriyoBasu
    @DebopriyoBasu 2 месяца назад +2

    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

    • @CrabGuyy
      @CrabGuyy 2 месяца назад

      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

  • @deathbombs
    @deathbombs 2 месяца назад

    I solved 450 qs, couldn't optimize past simulation. Have tips or im just dumb?

    • @yang5843
      @yang5843 2 месяца назад

      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.

  • @dragon_id_
    @dragon_id_ 2 месяца назад +1

    did every1 use "nums" instead of tickets at first !!

  • @s8x.
    @s8x. 2 месяца назад +1

    how did u learn everything

    • @spsc07
      @spsc07 2 месяца назад

      someone already said life lessons and hashmap

    • @s8x.
      @s8x. 2 месяца назад

      @@spsc07 neet

  • @user-zj8vp3no5l
    @user-zj8vp3no5l 2 месяца назад +2

    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

  • @ayushw
    @ayushw 2 месяца назад

    JS One-liner:
    var timeRequiredToBuy = function(tickets, k) {
    return tickets.reduce((acc, cur, i) => acc + Math.min(cur, tickets[k] - (i > k)), 0);
    };