Your question is Top K Frequent IPs. Start with the requirements on the right.
Run and submit as often as you like. When you're ready, talk me through your approach or go straight to the code.
Noblis mission operations telemetry can contain a very large stream of network transaction records. Write a function that returns the k most frequent IP addresses without sorting every distinct address.
Each input line has the format timestamp ip action status, separated by single spaces. The timestamp and remaining fields are irrelevant. Return IP addresses ordered by decreasing frequency. If two addresses have the same frequency, order them lexicographically ascending.
Your algorithm must process lines in one pass and maintain a heap containing at most k candidates after counting. The input iterable may be a list or a generator.
Implement top_k_ips(lines, k), where lines is an iterable of valid log-line strings and k is a positive integer. Return a list of at most k strings. The input guarantees that k does not exceed the number of distinct IP addresses.
def top_k_ips(lines, k):