leetcode 3238. 求出胜利玩家的数目 简单

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

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

  • 如果玩家 0 获得了任何的球,那么玩家 0 是胜利玩家。
  • 如果玩家 1 获得了至少 2 个相同颜色的球,那么玩家 1 是胜利玩家。
  • ...
  • 如果玩家 i 获得了至少 i + 1 个相同颜色的球,那么玩家 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 的球。

提示:

  • 2 <= n <= 10
  • 1 <= pick.length <= 100
  • pick[i].length == 2
  • 0 <= xi <= n - 1
  • 0 <= yi <= 10

分析:由于玩家数量最大为10,所有球的种类最大为10,可以建立一个玩家数组,标记每个玩家的每种球的个数。遍历pick数组,当当前玩家的当前颜色的球超过玩家编号时,记录该玩家为胜利玩家。

cpp 复制代码
int winningPlayerCount(int n, int** pick, int pickSize, int* pickColSize) {
    int player[n+5][11],ans[n+5];
    for(int i=0;i<n;++i)
    {
        ans[i]=0;
        for(int j=0;j<11;++j)
            player[i][j]=0;
    }

    for(int i=0;i<pickSize;++i)
    {
        int l=pick[i][0],r=pick[i][1];
        player[l][r]++;
        if(player[l][r]>l)ans[l]=1;
    }
    int cnt=0;
    for(int i=0;i<n;++i)
        if(ans[i])cnt++;
    return cnt;
}
相关推荐
圣保罗的大教堂10 小时前
leetcode 3650. 边反转的最小路径总成本 中等
leetcode
木井巳11 小时前
【递归算法】验证二叉搜索树
java·算法·leetcode·深度优先·剪枝
We་ct13 小时前
LeetCode 30. 串联所有单词的子串:从暴力到高效,滑动窗口优化详解
前端·算法·leetcode·typescript
历程里程碑13 小时前
子串----和为K的子数组
大数据·python·算法·leetcode·elasticsearch·搜索引擎·哈希算法
YuTaoShao13 小时前
【LeetCode 每日一题】2976. 转换字符串的最小成本 I
算法·leetcode·职场和发展
我是咸鱼不闲呀15 小时前
力扣Hot100系列16(Java)——[堆]总结()
java·算法·leetcode
YuTaoShao16 小时前
【LeetCode 每日一题】2977. 转换字符串的最小成本 II——(解法一)记忆化搜索
算法·leetcode·职场和发展
希望有朝一日能如愿以偿16 小时前
力扣每日一题
数据结构·算法·leetcode
草履虫建模16 小时前
力扣算法分析 27.移除元素
java·开发语言·数据结构·后端·算法·leetcode·排序算法
im_AMBER16 小时前
Leetcode 109 链表的中间结点 | 删除链表的中间节点
数据结构·学习·算法·leetcode·链表