Every day a Leetcode
题目来源:3238. 求出胜利玩家的数目
解法1:计数
遍历 pick,用一个 n×11 大小的矩阵,统计每个玩家得到的每种颜色的球的个数。
遍历每个玩家,如果该玩家至少有一种颜色的球大于玩家编号,则把答案加一。
代码:
/*
* @lc app=leetcode.cn id=3238 lang=cpp
*
* [3238] 求出胜利玩家的数目
*/
// @lc code=start
class Solution
{
public:
int winningPlayerCount(int n, vector<vector<int>> &pick)
{
vector<vector<int>> cnt(n, vector<int>(11, 0));
for (auto &p : pick)
cnt[p[0]][p[1]]++;
int ans = 0;
for (int i = 0; i < n; i++)
{
bool judge = false;
for (int j = 0; j < cnt[i].size(); j++)
if (cnt[i][j] > i)
judge = true;
if (judge)
ans++;
}
return ans;
}
};
// @lc code=end
结果:
复杂度分析:
时间复杂度:O(nU+m),其中 m 是数组 pick 的长度,U 是 yi 的最大值。
空间复杂度:O(nU),其中 U 是 yi 的最大值。