daily log 10.01.20

less than 1 minute read

Naive solution

class RecentCounter(object):

    def __init__(self):
        self.results = []


    def ping(self, t):
        """
        :type t: int
        :rtype: int
        """
        print([t-3000, t])

        curr_range = [t-3000, t]
        self.results.append(t)
        temp = []
        for r in self.results:
            if curr_range[0] <= r <= curr_range[1]:
                temp.append(r)

        return len(temp)


# Your RecentCounter object will be instantiated and called as such:
# obj = RecentCounter()
# param_1 = obj.ping(t)

Using a queue

class RecentCounter(object):

    def __init__(self):
        self.results = []



    def ping(self, t):
        """
        :type t: int
        :rtype: int
        """
        # print([t-3000, t])

        curr_range = [t-3000, t]

#         if self.results:
#             print('last', self.results[-1], curr_range[0])



        self.results.append(t)
        temp = []

        # peeking = ''
        while (self.results and (self.results[0] < curr_range[0])):
            # print(self.results[0], curr_range[0], self.results)
            self.results.pop(0)
        # print(self.results[0])

        for r in self.results:
            if curr_range[0] <= r <= curr_range[1]:
                temp.append(r)

        return len(temp)


# Your RecentCounter object will be instantiated and called as such:
# obj = RecentCounter()
# param_1 = obj.ping(t)