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

LeetCode 第136场双周赛个人题解

Q1. 求出胜利玩家的数目

原题链接

Q1. 求出胜利玩家的数目

思路分析

直接模拟

时间复杂度:O(N)

AC代码

class Solution {
public:int winningPlayerCount(int n, vector<vector<int>>& pick) {unordered_map<int, unordered_map<int, int>> cnt;for (auto& v : pick) {cnt[v[0]][v[1]] ++;}int res = 0;for (auto& [x, u] : cnt) {for (auto [c, d] : u) {if (x == 0 || d > x) {++ res;break;}}}return res;}
};

Q2. 最少翻转次数使二进制矩阵回文 I

原题链接

Q2. 最少翻转次数使二进制矩阵回文 I

思路分析

直接贪心就行,计算原矩阵和转置矩阵的每一行的不同的两两对称位置的数目,取小的那个

时间复杂度:O(MN)

AC代码

class Solution:def minFlips(self, grid: List[List[int]]) -> int:res1 = 0for row in grid:n = len(row)l, r = 0, n - 1while l < r:res1 += 1 if row[l] != row[r] else 0l += 1r -= 1grid = list(zip(*grid))res2 = 0for row in grid:n = len(row)l, r = 0, n - 1while l < r:res2 += 1 if row[l] != row[r] else 0l += 1r -= 1return min(res1, res2)

Q3. 最少翻转次数使二进制矩阵回文 II

原题链接

Q3. 最少翻转次数使二进制矩阵回文 II

思路分析

思维+分组背包

左上左下右上右下关于原点对称,所以矩阵只要满足回文,这四部分中1的数目一定是4的倍数

我们只需考虑行列为奇数的时候横对称轴和竖对称轴的情况

同样对两个对称轴的两两对称位置遍历,他们最终的结果要么是两个1要么是两个0,两个0的代价就是2 - 他们的和,两个1的代价也是2 - 他们的和

我们发现这就是一个分组背包问题,最多(n + m) / 2个组,每组内2个物品,背包容量为4

我们处理完四个对称部分的调整次数后,对横对称轴和竖对称轴求分组背包即可

时间复杂度:O(NM + N + M)

AC代码

class Solution:def minFlips(self, grid: List[List[int]]) -> int:res = c = 0m, n = len(grid), len(grid[0])buf = []res = 0for i in range(m // 2):for j in range(n // 2):s = grid[i][j] + grid[m - 1 - i][j] + grid[i][n - 1 - j] + grid[m - 1 - i][n - 1- j]res += min(4 - s, s)if m % 2:row = grid[m // 2]l, r = 0, n - 1while l < r:s = row[l] + row[r]buf.append([[0, s], [2, abs(2 - s)]])l += 1r -= 1if n % 2:l, r = 0, m - 1while l < r:s = grid[l][n // 2] + grid[r][n // 2]buf.append([[0, s],  [2, abs(2 - s)]])l += 1r -= 1if m % 2 and n % 2:t = grid[m // 2][n // 2]buf.append([[t, 0], [0, t]])if not buf:return resf = [inf, inf, inf, inf]for r in buf:nf = f.copy()for j in range(4):mi = inffor x, v in r:t = ((j - x) % 4 + 4) % 4if nf[x % 4] == inf:f[x % 4] = min(f[x % 4], v)mi = min(nf[t] + v, mi)if nf[j] == inf:f[j] = min(f[j], mi)else:f[j] = mireturn res + f[0]

Q4. 标记所有节点需要的时间

原题链接

Q4. 标记所有节点需要的时间

思路分析

换根dp

很明显的换根dp,为什么呢?

0时刻从根节点开始标记所需时间取决于根节点的孩子和根节点的奇偶性

而且题目要我们求出每个结点作为根时的情况,自然想到换根dp

先一次dfs0预处理d[],d[u] 代表0时刻开始标记u,u所在子树全部搞定的时间

然后dfs1 进行换根

求u 的儿子结点中 d[v] + (v & 1 ? 1 : 2)的最大值和次大值fi, se

那么我们换根为v时,如果d[v] + (v & 1 ? 1 : 2) == fi, 那么换根后d[u] = se,否则为fi

时间复杂度:O(N)

AC代码

class Solution:def timeTaken(self, edges: List[List[int]]) -> List[int]:n = len(edges) + 1adj = [[] for _ in range(n)]for x, y in edges:adj[x].append(y)adj[y].append(x)d = [0] * ndef dfs0(u: int, p: int) -> None:for v in adj[u]:if v == p:continuedfs0(v, u)d[u] = max(d[u], d[v] + (1 if v % 2 else 2))dfs0(0, -1)ans = [0] * ndef dfs1(u: int, p: int) -> None:fi, se = 0, 0for v in adj[u]:if d[v] + (1 if v % 2 else 2) > fi:se = fifi = d[v] + (1 if v % 2 else 2)elif d[v] + (1 if v % 2 else 2) > se:se = d[v] + (1 if v % 2 else 2)ans[u] = fifor v in adj[u]:if v == p:continued[u] = se if d[v] + (1 if v % 2 else 2) == fi else fidfs1(v, u)dfs1(0, -1)return ans

相关文章:

LeetCode 第136场双周赛个人题解

Q1. 求出胜利玩家的数目 原题链接 Q1. 求出胜利玩家的数目 思路分析 直接模拟 时间复杂度&#xff1a;O(N) AC代码 class Solution { public:int winningPlayerCount(int n, vector<vector<int>>& pick) {unordered_map<int, unordered_map<int, …...

The operation was rejected by your operating system. code CERT_HAS_EXPIRED报错解决

各种报错&#xff0c;试了清缓存&#xff0c;使用管理员权限打开命令行工具&#xff0c;更新npm&#xff0c;都不好使 最终解决&#xff1a;删除 c:/user/admin/ .npmrc...

[Git][基本操作]详细讲解

目录 1.创建本地仓库2.配置 Git3.添加文件1.添加文件2.提交文件3.其他 && 说明 4.删除文件5.跟踪修改文件6.版本回退7.撤销修改0.前言1.未add2.已add&#xff0c;未commit3.已add&#xff0c;已commit 1.创建本地仓库 创建⼀个Git本地仓库&#xff1a;git init运行该命…...

springMVC中从Excel文件中导入导出数据

目录 1. 数据库展示2. 导入依赖3. 写方法3.1 导入数据3.2 导出数据 4. 效果5. 不足6. 参考链接 1. 数据库展示 2. 导入依赖 pom.xml <!--文件上传处理--><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId>&…...

C++的STL简介(三)

目录 1.vector的模拟实现 1.1begin&#xff08;&#xff09; 1.2end&#xff08;&#xff09; 1.3打印信息 1.4 reserve&#xff08;&#xff09; 1.5 size&#xff08;&#xff09; 1.6 capacity&#xff08;&#xff09; 1.7 push_back() 1.8[ ] 1.9 pop_back() 1.10 insert&…...

BERT模型

BERT模型是由谷歌团队于2019年提出的 Encoder-only 的 语言模型&#xff0c;发表于NLP顶会ACL上。原文题目为&#xff1a;《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》链接 在前大模型时代&#xff0c;BERT模型可以算是一个参数量比…...

举例说明计算机视觉(CV)技术的优势和挑战

计算机视觉&#xff08;CV&#xff09;技术是通过计算机模拟和处理图像与视频数据来模拟人类视觉的能力。它可以带来许多优势&#xff0c;也面临一些挑战。 优势&#xff1a; 自动化&#xff1a;CV技术可以自动处理大量的图像和视频数据&#xff0c;从而提高工作效率和准确性。…...

Animate软件基础:关于补间动画中的图层

Animate 文档中的每一个场景都可以包含任意数量的时间轴图层。使用图层和图层文件夹可组织动画序列的内容和分隔动画对象。在图层和文件夹中组织它们可防止它们在重叠时相互擦除、连接或分段。若要创建一次包含多个元件或文本字段的补间移动的动画&#xff0c;请将每个对象放置…...

mac|安装hashcat(压缩包密码p解)

一、安装Macports&#xff08;如果有brew就不用这一步&#xff09; 根据官网文档&#xff1a;The MacPorts Project -- Download & Installation&#xff0c;安装步骤如下 1、下载MacPorts&#xff0c;这里我用的是tar.gz &#xff0c;可以通过keka&#xff08;keka安装在…...

【保姆级系列:锐捷模拟器的下载安装使用全套教程】

保姆级系列&#xff1a;锐捷模拟器的下载安装使用全套教程 1.介绍2.下载3.安装4.实践教程5.验证 1.介绍 锐捷目前可以通过EVE-NG来模拟自己家的路由器&#xff0c;交换机&#xff0c;防火墙。实现方式是把自己家的镜像导入到EVE-ng里面来运行。下面主要就是介绍如何下载镜像和…...

virtualbox7安装centos7.9配置静态ip

1.背景 我大概在一年之前安装virtualbox7centos7.9的环境&#xff0c;但看视频说用vagrant启动的窗口可以不用第三方工具(比如xshell、secure等)连接centos7.9&#xff0c;于是尝鲜试了下还可以&#xff0c;导致系统文件格式是vmdk了&#xff08;网上有vmdk转vdi的方法&#xf…...

结构型设计模式:桥接/组合/装饰/外观/享元

结构型设计模式&#xff1a;适配器/代理 (qq.com)...

vLLM初识(一)

vLLM初识&#xff08;一&#xff09; 前言 在LLM推理优化——KV Cache篇&#xff08;百倍提速&#xff09;中&#xff0c;我们已经介绍了KV Cache技术的原理&#xff0c;从中我们可以知道&#xff0c;KV Cache本质是空间换时间的技术&#xff0c;对于大型模型和长序列&#xf…...

【Apache Doris】周FAQ集锦:第 18 期

【Apache Doris】周FAQ集锦&#xff1a;第 18 期 SQL问题数据操作问题运维常见问题其它问题关于社区 欢迎查阅本周的 Apache Doris 社区 FAQ 栏目&#xff01; 在这个栏目中&#xff0c;每周将筛选社区反馈的热门问题和话题&#xff0c;重点回答并进行深入探讨。旨在为广大用户…...

docker部署可执行的jar

1.将项目打包&#xff0c;上传到服务器的指定目录 2.在该目录下创建Dockerfile文件 3.Dockerfile写入如下指令 # 基于哪个镜像 FROM java:8 # 拷贝文件到容器&#xff0c;也可以直接写成ADD xxxxx.jar /app.jar ADD springboot-file-0.0.1.jar file.jar RUN bash -c touch /…...

OpenCV||超详细的图像处理模块

一、颜色变换cvtColor dst cv2.cvtColor(src, code[, dstCn[, dst]]) src: 输入图像&#xff0c;即要进行颜色空间转换的原始图像。code: 转换代码&#xff0c;指定要执行的颜色空间转换类型。这是一个必需的参数&#xff0c;决定了源颜色空间到目标颜色空间的转换方式。dst…...

java面向对象期末总结

子类父类方法执行顺序&#xff1f;多态中和子类打印不一样&#xff1b; 子类在实现父类方法的时候没有用super关键字进行调用也会先执行父类的构造方法吗&#xff1f; 是的&#xff0c;当子类实例化时&#xff0c;先执行父类的构造方法&#xff0c;再执行子类的构造方法。即使在…...

文件搜索 36

删除文件 文件搜索 package File;import java.io.File;public class file3 {public static void main(String[] args) {search(new File("D :/"), "qq");}/*** 去目录搜索文件* param dir 目录* param filename 要搜索的文件名称*/public static void sear…...

IO多路转接

文章目录 五种IO模型fcntl多路转接selectpollepollepoll的工作模式 五种IO模型 阻塞IO: 在内核将数据准备好之前, 系统调用会一直等待. 所有的套接字, 默认都是阻塞方式.阻塞IO是最常见的IO模型。非阻塞IO: 如果内核还未将数据准备好, 系统调用仍然会直接返回, 并且返回EWOULD…...

基于深度学习的面部表情分类识别系统

&#xff1a;温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长 QQ 名片 :) 1. 项目简介 面部表情识别是计算机视觉领域的一个重要研究方向&#xff0c; 它在人机交互、心理健康评估、安全监控等领域具有广泛的应用。近年来&#xff0c;随着深度学习技术的快速发展&#xf…...

数据工程师技能树:从核心原理到实战项目的体系化成长指南

1. 项目概述&#xff1a;一个面向数据工程师的“技能树”仓库最近在GitHub上看到一个挺有意思的仓库&#xff0c;叫AceDataCloud/Skills。光看名字&#xff0c;你可能会觉得这是一个普通的“技能列表”或者“学习路线图”。但点进去仔细研究后&#xff0c;我发现它的定位非常精…...

AgenticHub:构建AI智能体的开源框架与核心架构解析

1. 项目概述&#xff1a;AgenticHub是什么&#xff0c;以及它为何值得关注 最近在AI应用开发领域&#xff0c;一个名为“AgenticHub”的开源项目在GitHub上引起了不小的讨论。这个由victordedomenico发起的项目&#xff0c;定位非常清晰&#xff1a;它旨在成为一个构建、编排和…...

10分钟精通rpatool:掌握Ren‘Py游戏资源管理的核心技术

10分钟精通rpatool&#xff1a;掌握RenPy游戏资源管理的核心技术 【免费下载链接】rpatool (migrated to https://codeberg.org/shiz/rpatool) A tool to work with RenPy archives. 项目地址: https://gitcode.com/gh_mirrors/rp/rpatool rpatool是一个专门处理RenPy游…...

ChatGPT对话转Anki卡片:自动化工具实现与高效学习流搭建

1. 项目概述&#xff1a;从ChatGPT对话到Anki卡片的自动化桥梁最近在整理学习笔记时&#xff0c;我发现了一个效率痛点&#xff1a;和ChatGPT的对话里充满了高质量的知识点&#xff0c;但要把它们变成可以复习的Anki卡片&#xff0c;过程却异常繁琐。复制、粘贴、手动制卡&…...

IDM无限试用终极方案:无需破解的完整技术指南

IDM无限试用终极方案&#xff1a;无需破解的完整技术指南 【免费下载链接】idm-trial-reset Use IDM forever without cracking 项目地址: https://gitcode.com/gh_mirrors/id/idm-trial-reset 你是否厌倦了每30天就要重新安装IDM&#xff08;Internet Download Manager…...

OpencvSharp 算子学习教案之 - Cv2.Scharr

OpencvSharp 算子学习教案之 - Cv2.Scharr 大家好&#xff0c;Opencv在很多工程项目中都会用到&#xff0c;而OpencvSharp则是以C#开发与实现的Opencv操作库&#xff0c;对.NET开发人员友好&#xff0c;但很多API的中文资料、应用场景及常见坑点等缺乏系统性归纳&#xff0c;因…...

既然单头注意力就可以算单个词从整个句子抽取的维度信息了 为啥还有了多头注意力 多头注意力的意义是啥

你这个问题问到“为什么还要多头”了&#xff0c;本质是在问&#xff1a;单个 attention 已经能做“信息加权汇总”&#xff0c;为什么还要拆成多个&#xff1f;答案一句话先给你&#xff1a;单头 attention 只能学“一种关系视角”&#xff0c;多头 attention 是让模型同时学“…...

AI应用开发利器:基于MCP协议的故障记忆与自学习系统

1. 项目概述&#xff1a;一个为AI应用注入“事故记忆”的MCP服务器最近在折腾AI应用开发&#xff0c;特别是那些需要调用外部工具和数据的智能体&#xff08;Agent&#xff09;时&#xff0c;总绕不开一个核心问题&#xff1a;如何让AI在调用外部API或执行复杂操作时&#xff0…...

树莓派Pico通过DVI Sock实现HDMI视频输出:原理、配置与图形编程实战

1. 项目概述与核心价值如果你手头有一个树莓派 Pico 或者 Pico W&#xff0c;看着它强大的 RP2040 双核处理器和丰富的 GPIO&#xff0c;是不是偶尔会想&#xff1a;要是它能直接输出视频到我的大显示器上&#xff0c;那能玩的花样可就太多了。无论是做个迷你游戏机、一个酷炫的…...

FPGA在工业自动化中的核心价值与实现

1. FPGA在工业自动化中的核心价值解析在工业控制领域&#xff0c;实时性和可靠性是系统设计的核心诉求。传统基于MCU或DSP的方案往往面临性能瓶颈&#xff0c;而ASIC方案又缺乏灵活性。FPGA&#xff08;现场可编程门阵列&#xff09;通过其独特的硬件可编程特性&#xff0c;为工…...