列表

详情


100381. 求出胜利玩家的数目

给你一个整数 n ,表示在一个游戏中的玩家数目。同时给你一个二维整数数组 pick ,其中 pick[i] = [xi, yi] 表示玩家 xi 获得了一个颜色为 yi 的球。

如果玩家 i 获得的球中任何一种颜色球的数目 严格大于 i 个,那么我们说玩家 i 是胜利玩家。换句话说:

请你返回游戏中 胜利玩家 的数目。

注意,可能有多个玩家是胜利玩家。

 

示例 1:

输入:n = 4, pick = [[0,0],[1,0],[1,0],[2,1],[2,1],[2,0]]

输出:2

解释:

玩家 0 和玩家 1 是胜利玩家,玩家 2 和玩家 3 不是胜利玩家。

示例 2:

输入:n = 5, pick = [[1,1],[1,2],[1,3],[1,4]]

输出:0

解释:

没有胜利玩家。

示例 3:

输入:n = 5, pick = [[1,1],[2,4],[2,4],[2,4]]

输出:1

解释:

玩家 2 是胜利玩家,因为玩家 2 获得了 3 个颜色为 4 的球。

 

提示:

相似题目

我能赢吗

预测赢家

原站题解

去查看

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

golang 解法, 执行用时: 19 ms, 内存消耗: 6.2 MB, 提交时间: 2024-08-08 09:29:29

func winningPlayerCount(n int, pick [][]int) (ans int) {
	cnts := make([][11]int, n)
	for _, p := range pick {
		cnts[p[0]][p[1]]++
	}

	for i, cnt := range cnts {
		for _, c := range cnt {
			if c > i {
				ans++
				break
			}
		}
	}
	return
}

cpp 解法, 执行用时: 39 ms, 内存消耗: 35.9 MB, 提交时间: 2024-08-08 09:28:39

class Solution {
public:
    int winningPlayerCount(int n, vector<vector<int>>& pick) {
        vector<array<int, 11>> cnts(n);
        for (auto& p : pick) {
            cnts[p[0]][p[1]]++;
        }

        int ans = 0;
        for (int i = 0; i < n; i++) {
            for (int c : cnts[i]) {
                if (c > i) {
                    ans++;
                    break;
                }
            }
        }
        return ans;
    }
};

java 解法, 执行用时: 2 ms, 内存消耗: 44.1 MB, 提交时间: 2024-08-08 09:27:54

class Solution {
    public int winningPlayerCount(int n, int[][] pick) {
        int[][] cnts = new int[n][11];
        for (int[] p : pick) {
            cnts[p[0]][p[1]]++;
        }

        int ans = 0;
        for (int i = 0; i < n; i++) {
            for (int c : cnts[i]) {
                if (c > i) {
                    ans++;
                    break;
                }
            }
        }
        return ans;
    }
}

python3 解法, 执行用时: 47 ms, 内存消耗: 16.4 MB, 提交时间: 2024-08-08 09:27:28

class Solution:
    def winningPlayerCount(self, n: int, pick: List[List[int]]) -> int:
        cnts = [[0] * 11 for _ in range(n)]
        for x, y in pick:
            cnts[x][y] += 1

        ans = 0
        for i, cnt in enumerate(cnts):
            if any(c > i for c in cnt):
                ans += 1
        return ans

上一题