列表

详情


6221. 最流行的视频创作者

给你两个字符串数组 creatorsids ,和一个整数数组 views ,所有数组的长度都是 n 。平台上第 i 个视频者是 creator[i] ,视频分配的 id 是 ids[i] ,且播放量为 views[i]

视频创作者的 流行度 是该创作者的 所有 视频的播放量的 总和 。请找出流行度 最高 创作者以及该创作者播放量 最大 的视频的 id 。

返回一个二维字符串数组 answer ,其中 answer[i] = [creatori, idi] 表示 creatori 的流行度 最高 且其最流行的视频 id 是 idi ,可以按任何顺序返回该结果

 

示例 1:

输入:creators = ["alice","bob","alice","chris"], ids = ["one","two","three","four"], views = [5,10,5,4]
输出:[["alice","one"],["bob","two"]]
解释:
alice 的流行度是 5 + 5 = 10 。
bob 的流行度是 10 。
chris 的流行度是 4 。
alice 和 bob 是流行度最高的创作者。
bob 播放量最高的视频 id 为 "two" 。
alice 播放量最高的视频 id 是 "one" 和 "three" 。由于 "one" 的字典序比 "three" 更小,所以结果中返回的 id 是 "one" 。

示例 2:

输入:creators = ["alice","alice","alice"], ids = ["a","b","c"], views = [1,2,2]
输出:[["alice","b"]]
解释:
id 为 "b" 和 "c" 的视频都满足播放量最高的条件。
由于 "b" 的字典序比 "c" 更小,所以结果中返回的 id 是 "b" 。

 

提示:

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: vector<vector<string>> mostPopularCreator(vector<string>& creators, vector<string>& ids, vector<int>& views) { } };

golang 解法, 执行用时: 264 ms, 内存消耗: 30.4 MB, 提交时间: 2022-11-16 10:55:19

func mostPopularCreator(creators, ids []string, views []int) (ans [][]string) {
	type tuple struct {
		viewSum, maxView int
		id               string
	}
	m, maxViewSum := map[string]tuple{}, 0
	for i, name := range creators {
		id, view := ids[i], views[i]
		t := m[name]
		if t.id == "" {
			t = tuple{view, view, id}
		} else {
			t.viewSum += view
			if view > t.maxView || view == t.maxView && id < t.id {
				t.maxView = view
				t.id = id
			}
		}
		maxViewSum = max(maxViewSum, t.viewSum)
		m[name] = t
	}
	for name, t := range m {
		if t.viewSum == maxViewSum {
			ans = append(ans, []string{name, t.id})
		}
	}
	return
}

func max(a, b int) int { if a < b { return b }; return a }

python3 解法, 执行用时: 172 ms, 内存消耗: 58.1 MB, 提交时间: 2022-11-16 10:54:51

class Solution:
    def mostPopularCreator(self, creators: List[str], ids: List[str], views: List[int]) -> List[List[str]]:
        m, max_view_sum = {}, 0  # 哈希表统计每个人的播放总量,最大播放量,最大播放量对应id
        for name, id, view in zip(creators, ids, views):
            if name in m:
                t = m[name]
                t[0] += view
                if view > t[1] or view == t[1] and id < t[2]:
                    t[1], t[2] = view, id
            else:
                m[name] = [view, view, id]
            max_view_sum = max(max_view_sum, m[name][0])
        return [[name, id] for name, (view_sum, _, id) in m.items() if view_sum == max_view_sum]

上一题