Home Tweet Counts Per Frequency
Post
Cancel

Tweet Counts Per Frequency

View Tweet Counts Per Frequency on LeetCode

Statistics

Time Spent Coding
15 minutes

Time Complexity
O(m) - The getTweet... method must iterate through all of tweetName’s tweets (m) to determine their groupings, resulting in the O(n) time complexity. All other methods are O(1).

Space Complexity
O(n) - Every tweet must be added to the dictionary, resulting in the O(n) space complexity.

Runtime Beats
69.74% of other submissions

Memory Beats
67.11% of other sumbissions

Explanation

Code comments explain the program

Data Structure Used

Hash Map (Dictionary) - A data structure that maps keys to their values. Each key may only appear once.

Solution

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
class TweetCounts:

    # Initialize a dictionary to track tweets
    def __init__(self):
        self.d = {}

    # Fill the dictionary with the tweetName as the key, and the time stamps of their tweets
    def recordTweet(self, tweetName: str, time: int) -> None:
        if tweetName in self.d:
            self.d[tweetName].append(time)
        else:
            self.d[tweetName] = [time]

    def getTweetCountsPerFrequency(self, freq: str, tweetName: str, startTime: int, endTime: int) -> List[int]:
        # Assign step, according to the input `freq`
        step = 1
        if freq.lower() == 'minute': step = 60
        elif freq.lower() == 'hour': step = 3600
        elif freq.lower() == 'day':  step = 86400

        # Assign the number of groups within the given range to nGroups
        nGroups = (endTime - startTime) // step + 1

        # Create a list with nGroups
        groups = [0] * nGroups

        # Iterate through all of the tweets from tweetName
        for n in self.d[tweetName]:

            # If the time stamp is outside of our search criteria, continue to the next value
            if n < startTime or n > endTime: continue

            # Calculate the group that n corresponds to and increment it
            group = (n - startTime)//step
            groups[group] += 1

        return groups
This post is licensed under CC BY 4.0 by the author.

Subsets

Repeated Substring Pattern