Leetcode第136场双周赛题解(c++)

news2025/7/19 10:06:44

题外话

也是好久没有更新力扣比赛的题解了,前段时间也是比较忙(说的好像现在不忙一样哈哈),像我等菜鸟,一般都是保二进三四不写的,笑死。

题目一.求出胜利玩家的数目

给你一个整数 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

思路

看到这个题,第一想法就是遍历pick[]数组了,然后vector<unordered_map<int,int> > colorCount(n)来记录玩家的颜色球数;最后遍历colorCount,输出某个颜色球数目大于i的个数;

class Solution {
public:
    int winningPlayerCount(int n, vector<vector<int>>& pick) {
       vector<unordered_map<int,int> > colorCount(n);
       for(auto p:pick){
            int player=p[0];
            int color=p[1];
            colorCount[player][color]++;
       }
       int ans=0;
       for(int i=0;i<n;i++){
        for(auto entry:colorCount[i]) {
            if(entry.second>i) {
                ans++;
                break;
            }
        }
       }
       return ans;
    }
};

题目二.最少翻转次数使二进制矩阵回文

给你一个 m x n 的二进制矩阵 grid 。

如果矩阵中一行或者一列从前往后与从后往前读是一样的,那么我们称这一行或者这一列是 回文 的。

你可以将 grid 中任意格子的值 翻转 ,也就是将格子里的值从 0 变成 1 ,或者从 1 变成 0 。

请你返回 最少 翻转次数,使得矩阵 要么 所有行是 回文的 ,要么所有列是 回文的 。

示例 1:

输入:grid = [[1,0,0],[0,0,0],[0,0,1]]

输出:2

解释:

将高亮的格子翻转,得到所有行都是回文的。

示例 2:

输入:grid = [[0,1],[0,1],[0,0]]

输出:1

解释:

将高亮的格子翻转,得到所有列都是回文的。

示例 3:

输入:grid = [[1],[0]]

输出:0

解释:

所有行已经是回文的。

提示:

  • m == grid.length
  • n == grid[i].length
  • 1 <= m * n <= 2 * 105
  • 0 <= grid[i][j] <= 1

思路

要么行回文,要么列回文。分别求出行与列各需要多少翻转次数,return二者较小的结果即可。

class Solution {
public:
    int minFlips(vector<vector<int>>& grid) {
        int m = grid.size();
        int n = grid[0].size();
        
        // 计算行需要的最小翻转次数
        int rowFlips = 0;
        for (int i = 0; i < m; ++i) {
            rowFlips += minFlipsForPalindrome(grid[i]);
        }
        
        // 计算列需要的最小翻转次数
        int colFlips = 0;
        for (int j = 0; j < n; ++j) {
            vector<int> column(m);
            for (int i = 0; i < m; ++i) {
                column[i] = grid[i][j]; // 构建当前列的数组
            }
            colFlips += minFlipsForPalindrome(column);
        }
        
        return min(rowFlips, colFlips);
    }
    
    int minFlipsForPalindrome(vector<int>& line) {
        int length = line.size();
        int flips = 0;
        // 比较前后半部分
        for (int i = 0; i < length / 2; ++i) {
            if (line[i] != line[length - 1 - i]) {
                flips++;
            }
        }
        return flips;
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1977725.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C++ STL】vector

文章目录 vector1. vector的接口1.1 默认成员函数1.2 容量操作1.3 访问操作1.4 修改操作1.5 vector与常见的数据结构的对比 2. vector的模拟实现2.1 类的定义2.2 默认成员函数迭代器的分类 2.3 容量接口memcpy 浅拷贝问题内存增长机制reserve和resize的区别 2.4 修改接口迭代器…

ScreenAgent:基于LVLM的计算机控制智能体

ScreenAgent : A Vision Language Model-driven Computer Control Agent 论文链接: https://arxiv.org/abs/2402.07945https://arxiv.org/abs/2402.07945IJCAI 2024 1.概述 大型语言模型(LLM),诸如ChatGPT与GPT-4,在自然语言处理领域(涵盖生成、理解及对话等任务)展现出…

springBoot 3.X整合camunda

camunDa camunDa 是2013年从Activiti5 中分离出来的一个新的工作流引擎。Camunda 官方提供了 Camunda Platform、Camunda Modeler&#xff0c;其中 Camunda Platform 以 Camunda engine 为基础为用户提供可视化界面&#xff0c;Camunda Modeler 是流程文件建模平台&#xff0c…

python 的 tuple(元组) 是不是冗余设计?

有人问&#xff0c;python 的 tuple&#xff08;元组&#xff09; 是不是冗余设计&#xff1f;因为它和list&#xff08;列表&#xff09;很像。 先抛观点&#xff0c;tuple不是冗余设计&#xff0c;它最大的特点是不可变&#xff0c;在Python程序设计中非常重要。 tuple与li…

药店管理小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;药品分类管理&#xff0c;药品信息管理&#xff0c;留言板管理&#xff0c;订单管理&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;药品信息&#xf…

VBA中类的解读及应用第十四讲:限制复选选择,程序运行过程及效果

《VBA中类的解读及应用》教程【10165646】是我推出的第五套教程&#xff0c;目前已经是第一版修订了。这套教程定位于最高级&#xff0c;是学完初级&#xff0c;中级后的教程。 类&#xff0c;是非常抽象的&#xff0c;更具研究的价值。随着我们学习、应用VBA的深入&#xff0…

【Vue3】组件通信之$parent

【Vue3】组件通信之$parent 背景简介开发环境开发步骤及源码总结 背景 随着年龄的增长&#xff0c;很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来&#xff0c;技术出身的人总是很难放下一些执念&#xff0c;遂将这些知识整理成文&#xff0c;以纪念曾经努力学习奋斗的…

利用Dockerfile文件执行docker build自动构建镜像

一、Dockerfile使用详解 1.1 Dockerfile介绍 DockerFile是一种被Docker程序解释执行的脚本&#xff0c;由一条条的命令组成的&#xff0c;每条命令对应linux下面的一条命令&#xff0c;Docker程序将这些DockerFile指令再翻译成真正的linux命令&#xff0c;其有自己的书写方式和…

读零信任网络:在不可信网络中构建安全系统08设备清单管理

1. 设备清单管理 1.1. 设备的认证和完整性检查是零信任安全至关重要的第一大步&#xff0c;但是仅仅验证设备是否属于企业是不够的 1.2. 设备清单管理涉及对设备及其属性进行编目管理 1.2.1. 将配置管理作为设备清单数据库 1.2.2. 维护/管理这些记录对客户端和服务器设备同样…

AI电销机器人的效果与作用

ai电销机器人的工作效率是非常高的&#xff0c;电销机器人一天的外呼量至少是3000左右&#xff0c;工作效率是人工的十倍还多&#xff0c;并且电销机器人没有负面情绪&#xff0c;一直都可以保持高昂的工作热情&#xff0c;非常简单方便。 并且ai电销机器人是越用越聪明的&…

刘润《关键跃升》读书笔记3

1&#xff09; 防御动⼒”发动机 ⽐如&#xff0c;恐惧。 转正考核、末位淘汰等&#xff0c;本质上都是在制造“危险”环境&#xff0c;从⽽激发员 ⼯全⼼投⼊。万⼀没转正&#xff0c;万⼀被淘汰&#xff0c;房贷怎么还&#xff0c;孩⼦怎么养&#xff1f; 你想想都害怕&am…

【Redis 进阶】哨兵 Sentinel(重点理解流程和原理)

Redis 的主从复制模式下&#xff0c;一旦主节点由于故障不能提供服务&#xff0c;需要人工进行主从切换&#xff0c;同时大量的客户端需要被通知切换到新的主节点上&#xff0c;对于上了一定规模的应用来说&#xff0c;这种方案是无法接受的&#xff0c;于是 Redis 从 2.8 开始…

sa-token登录机制以及网关统一鉴权环境搭建

文章目录 1.sa-token1.37集成&#xff08;基于token&#xff09;1.文档网址2.**sun-club-auth-application-controller引入依赖**3.application.yml4.sun-club-auth-application-controller测试的controller1.UserController.java2.启动测试1.登录&#xff0c;得到satoken2.验证…

当AIGC走进温室大棚:AI+“种菜“的前世今生

&#xff08; 于景鑫 国家农业信息化工程技术研究中心&#xff09; 近年来,人工智能生成内容(AIGC)技术引发业界广泛关注。从NLP领域的GPT-3到CV领域的Stable Diffusion,AIGC展现了惊人的创造力,正在重塑人们的工作和生活方式。与此同时,农业领域也正经历着数字化、智能化的深刻…

Golang环境篇

一、Golang环境篇 一&#xff09;go简介 1、Golang定义 Go语言是Google于2009年推出的一门新的系统编程语言。 2、特性&#xff1a; 静态编译内存分配&#xff1a;Go 选择了 tcmalloc&#xff0c;它本就是为并发而设计的高性能内存分配组件。垃圾回收&#xff1a;每次升级&…

基于51单片机的汽车灯控制器proteus仿真

地址&#xff1a; https://pan.baidu.com/s/1YrwCUQIKwdth1N2UsUtSRA 提取码&#xff1a;1234 仿真图&#xff1a; 芯片/模块的特点&#xff1a; AT89C52/AT89C51简介&#xff1a; AT89C52/AT89C51是一款经典的8位单片机&#xff0c;是意法半导体&#xff08;STMicroelectro…

基于Java的网络考试系统的设计与实现

点击下载源码 基于Java的网络考试系统的设计与实现 摘 要 科技在进步&#xff0c;人们生活和工作的方式正发生着改变&#xff0c;不仅体现在人们的衣食住行&#xff0c;也体现在与时俱进的考试形式上。以前的考试需要组织者投入大量的时间和精力&#xff0c;需要对考试的试题…

Java线程池原理剖析和应用指南

目录 Java线程池详解一、Java线程池简介池化思想池化思想的优点 二、线程池的实现原理分析实现线程池需要考虑哪些问题&#xff1f;线程池的简单使用示例线程池原理的简单图示 三、Executor详解Executor简介Executor框架的继承结构总结ExecutorExecutorService 四、ThreadPoolE…

免费自动化AI视频剪辑工具

下载地址&#xff1a;https://pan.quark.cn/s/3c5995da512e FunClip是一款完全开源、本地部署的自动化视频剪辑工具&#xff0c;通过调用阿里巴巴通义实验室开源的FunASR Paraformer系列模型进行视频的语音识别&#xff0c;随后用户可以自由选择识别结果中的文本片段或说话人&…

【Python系列】Python 协程:并发编程的新篇章

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…