当前位置: 首页 > news >正文

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

题外话

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

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

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 云原生应用程序简介
  • 《计算机网络》(第8版)第1章 概述 复习笔记
  • 【JavaScript】栈功能(先进后出)
  • WebSocket 协议介绍
  • 谷粒商城实战笔记-103~104-全文检索-ElasticSearch-Docker安装ES和Kibana
  • 什么是嵌入式
  • uniapp中实现语音识别(app+小程序)
  • C++解决:早餐组合
  • 抽象代数精解【4】
  • Web开发:用C#的逻辑理解VUE语法(VUE + Webapi小白开发笔记)
  • k8s安装ingress-nginx
  • [H贪心] lc100376. 新增道路查询后的最短距离 II(贪心+读题+代码实现+周赛409_3)
  • web3 solana
  • 机器学习练手(六):机器学习算法实践实战
  • 【深度学习】【框架】【基本结构】transformer
  • chrome扩展demo1-小时钟
  • JAVA SE 6 GC调优笔记
  • JAVA_NIO系列——Channel和Buffer详解
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • laravel 用artisan创建自己的模板
  • React的组件模式
  • vue总结
  • 浮动相关
  • 工程优化暨babel升级小记
  • 和 || 运算
  • 经典排序算法及其 Java 实现
  • 聊聊hikari连接池的leakDetectionThreshold
  • 云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • ​十个常见的 Python 脚本 (详细介绍 + 代码举例)
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • # Kafka_深入探秘者(2):kafka 生产者
  • ######## golang各章节终篇索引 ########
  • #{} 和 ${}区别
  • #WEB前端(HTML属性)
  • $.ajax,axios,fetch三种ajax请求的区别
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (六)Hibernate的二级缓存
  • (推荐)叮当——中文语音对话机器人
  • (学习日记)2024.03.25:UCOSIII第二十二节:系统启动流程详解
  • (一)Java算法:二分查找
  • (已更新)关于Visual Studio 2019安装时VS installer无法下载文件,进度条为0,显示网络有问题的解决办法
  • .net 7和core版 SignalR
  • .NET Core6.0 MVC+layui+SqlSugar 简单增删改查
  • .NET设计模式(2):单件模式(Singleton Pattern)
  • .sh
  • .vue文件怎么使用_我在项目中是这样配置Vue的
  • /3GB和/USERVA开关
  • @zabbix数据库历史与趋势数据占用优化(mysql存储查询)
  • [ 2222 ]http://e.eqxiu.com/s/wJMf15Ku
  • [15] 使用Opencv_CUDA 模块实现基本计算机视觉程序
  • [2013][note]通过石墨烯调谐用于开关、传感的动态可重构Fano超——
  • [BZOJ 3531][Sdoi2014]旅行(树链剖分+线段树)