given a list lst and a number n create a new list that contains each number of the list at most n times without reordering for example if n 2 and the input is 1 2 3 1 2 1 2 3 you take 1 2 3 1 2 drop the next 1 2 since this would lead to 1 and 2 being in the result 3 times and then take 3 which leads to 1 2 3 1 2 3 time complexity on2 time complexity on using hash tables time complexity o n 2 time complexity o n using hash tables keep track of occurrences
import collections



def delete_nth_naive(array, n):
    ans = []
    for num in array:
        if ans.count(num) < n:
            ans.append(num)
    return ans



def delete_nth(array, n):
    result = []
    counts = collections.defaultdict(int)  

    for i in array:

        if counts[i] < n:
            result.append(i)
            counts[i] += 1

    return result