Skip to main content

Command Palette

Search for a command to run...

Solving Leetcode Interviews in Seconds with AI: Most Popular Video Creator

Updated
3 min read

Introduction

In this blog post, we will explore how to solve the LeetCode problem "2456" using AI. LeetCode is a popular platform for preparing for coding interviews, and with the help of AI tools like Chatmagic, we can generate solutions quickly and efficiently - helping you pass the interviews and get the job offer without having to study for months.

Problem Statement

You are given two string arrays creators and ids, and an integer array views, all of length n. The ith video on a platform was created by creators[i], has an id of ids[i], and has views[i] views. The popularity of a creator is the sum of the number of views on all of the creator's videos. Find the creator with the highest popularity and the id of their most viewed video. If multiple creators have the highest popularity, find all of them. If multiple videos have the highest view count for a creator, find the lexicographically smallest id. Note: It is possible for different videos to have the same id, meaning that ids do not uniquely identify a video. For example, two videos with the same ID are considered as distinct videos with their own viewcount. Return a 2D array of strings answer where answer[i] = [creatorsi, idi] means that creatorsi has the highest popularity and idi is the id of their most popular video. The answer can be returned in any order. Example 1: Input: creators = ["alice","bob","alice","chris"], ids = ["one","two","three","four"], views = [5,10,5,4] Output: [["alice","one"],["bob","two"]] Explanation: The popularity of alice is 5 + 5 = 10. The popularity of bob is 10. The popularity of chris is 4. alice and bob are the most popular creators. For bob, the video with the highest view count is "two". For alice, the videos with the highest view count are "one" and "three". Since "one" is lexicographically smaller than "three", it is included in the answer. Example 2: Input: creators = ["alice","alice","alice"], ids = ["a","b","c"], views = [1,2,2] Output: [["alice","b"]] Explanation: The videos with id "b" and "c" have the highest view count. Since "b" is lexicographically smaller than "c", it is included in the answer. Constraints: n == creators.length == ids.length == views.length 1 <= n <= 105 1 <= creators[i].length, ids[i].length <= 5 creators[i] and ids[i] consist only of lowercase English letters. 0 <= views[i] <= 105

Explanation

Here's the breakdown of the solution:

  • Calculate Creator Popularity: Iterate through the input arrays, summing the views for each creator using a hash map (dictionary).
  • Track Most Popular Video: While calculating popularity, simultaneously track the video ID with the highest view count for each creator, choosing the lexicographically smaller ID in case of ties.
  • Identify Highest Popularity Creators: Find the maximum popularity among all creators. Iterate through the creator data again, selecting only those creators whose popularity matches the maximum.

  • Runtime Complexity: O(n), where n is the length of the input arrays. Storage Complexity: O(n)

Code

    def mostPopularCreator(creators: list[str], ids: list[str], views: list[int]) -> list[list[str]]:
    n = len(creators)
    creator_popularity = {}
    creator_best_video = {}

    for i in range(n):
        creator = creators[i]
        id = ids[i]
        view = views[i]

        if creator not in creator_popularity:
            creator_popularity[creator] = 0
            creator_best_video[creator] = ["", 0]  # [id, view_count]

        creator_popularity[creator] += view

        if view > creator_best_video[creator][1]:
            creator_best_video[creator][0] = id
            creator_best_video[creator][1] = view
        elif view == creator_best_video[creator][1] and id < creator_best_video[creator][0]:
            creator_best_video[creator][0] = id

    max_popularity = 0
    for creator in creator_popularity:
        max_popularity = max(max_popularity, creator_popularity[creator])

    result = []
    for creator in creator_popularity:
        if creator_popularity[creator] == max_popularity:
            result.append([creator, creator_best_video[creator][0]])

    return result

More from this blog

C

Chatmagic blog

2894 posts