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

LeetCode 每日一题 2025/2/10-2025/2/16

记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步


目录

      • 2/10 913. 猫和老鼠
      • 2/11 1728. 猫和老鼠 II
      • 2/12 1760. 袋子里最少数目的球
      • 2/13 1742. 盒子中小球的最大数量
      • 2/14 1552. 两球之间的磁力
      • 2/15 1706. 球会落何处
      • 2/16 1299. 将每个元素替换为右侧最大元素


2/10 913. 猫和老鼠

1.动态规划 (TLE)
dp[k][rat][cat] 第k轮表示老鼠位于rat位置 猫位于cat位置的游戏结果
dp[0][1][2]为初始状态的结果
老鼠进入0则老鼠获胜 dp[k][0][cat]=1
猫和老鼠同个位置猫获胜 dp[k][x][x] = 2 x!=0
如果k>=2n 平局 猫和老鼠必定走到了之前各自走过的位置 依旧无法取胜
2.拓扑排序
https://leetcode.cn/problems/cat-and-mouse/?envType=daily-question&envId=2025-02-10

def catMouseGame1(graph):""":type graph: List[List[int]]:rtype: int"""n = len(graph)dp = [[[-1]*n for _ in range(n)] for _ in range(2*n*n)]mem={}def find(r,c,k):if k==2*n*n:return 0res = dp[k][r][c]if res!=-1:return resif r==0:return 1elif r==c:return 2else:res = move(r,c,k)dp[k][r][c] = resreturn resdef move(rat,cat,k):if (rat,cat,k) in mem:return mem[(rat,cat,k)]cur = rat if k%2==0 else catdefaultRes = 1 if cur!=rat else 2 #老鼠回合默认猫赢res = defaultResfor loc in graph[cur]:if cur==cat and loc==0:continuenextR = loc if cur==rat else ratnextC = loc if cur==cat else catnextRes = find(nextR,nextC,k+1)if nextRes!=defaultRes: ##找到一个能够赢得即可res = nextResif res!=0:breakmem[(rat,cat,k)] = resreturn resreturn find(1,2,0)def catMouseGame2(graph):""":type graph: List[List[int]]"""import  collectionsMOUSE_TURN = 0CAT_TURN = 1DRAW = 0MOUSE_WIN = 1CAT_WIN = 2n = len(graph)degrees = [[[0, 0] for _ in range(n)] for _ in range(n)]results = [[[0, 0] for _ in range(n)] for _ in range(n)]for i in range(n):for j in range(1, n):degrees[i][j][MOUSE_TURN] = len(graph[i])degrees[i][j][CAT_TURN] = len(graph[j])for y in graph[0]:for i in range(n):degrees[i][y][CAT_TURN] -= 1q = collections.deque()for j in range(1, n):results[0][j][MOUSE_TURN] = MOUSE_WINresults[0][j][CAT_TURN] = MOUSE_WINq.append((0, j, MOUSE_TURN))q.append((0, j, CAT_TURN))for i in range(1, n):results[i][i][MOUSE_TURN] = CAT_WINresults[i][i][CAT_TURN] = CAT_WINq.append((i, i, MOUSE_TURN))q.append((i, i, CAT_TURN))while q:mouse, cat, turn = q.popleft()result = results[mouse][cat][turn]if turn == MOUSE_TURN:prevStates = [(mouse, prev, CAT_TURN) for prev in graph[cat]]else:prevStates = [(prev, cat, MOUSE_TURN) for prev in graph[mouse]]for prevMouse, prevCat, prevTurn in prevStates:if prevCat == 0:continueif results[prevMouse][prevCat][prevTurn] == DRAW:canWin = result == MOUSE_WIN and prevTurn == MOUSE_TURN or result == CAT_WIN and prevTurn == CAT_TURNif canWin:results[prevMouse][prevCat][prevTurn] = resultq.append((prevMouse, prevCat, prevTurn))else:degrees[prevMouse][prevCat][prevTurn] -= 1if degrees[prevMouse][prevCat][prevTurn] == 0:results[prevMouse][prevCat][prevTurn] = CAT_WIN if prevTurn == MOUSE_TURN else MOUSE_WINq.append((prevMouse, prevCat, prevTurn))return results[1][2][MOUSE_TURN]

2/11 1728. 猫和老鼠 II

缓存lru_cache
参考https://leetcode.cn/problems/cat-and-mouse-ii/solution/python-ji-xiao-ji-da-bo-yi-by-himymben-ukbk/

def canMouseWin(grid, catJump, mouseJump):""":type grid: List[str]:type catJump: int:type mouseJump: int:rtype: bool"""move = [(0,1),(0,-1),(-1,0),(1,0)]n,m = len(grid),len(grid[0])for i in range(n):for j in range(m):if grid[i][j]=="C":cat = (i,j)elif grid[i][j] =="F":food = (i,j)elif grid[i][j] == "M":mouse = (i,j)@lru_cache(None)def dfs(mloc,cloc,i):if mloc==cloc or cloc==food or i>128:return Falseif mloc == food:return Truepos,jump = mloc,mouseJumpcat_turn = Falseif i%2:pos,jump = cloc,catJumpcat_turn = Truefor dx,dy in move:for step in range(jump+1):nx,ny = pos[0]+dx*step,pos[1]+dy*stepif nx<0 or ny<0 or nx>=n or ny>=m or grid[nx][ny]=="#":breakif not cat_turn and dfs((nx,ny),cloc,i+1):return Trueelif cat_turn and not dfs(mloc,(nx,ny),i+1):return Falsereturn cat_turnreturn dfs(mouse,cat,0)

2/12 1760. 袋子里最少数目的球

二分判断 每个袋子里最多为x时需要的操作次数
如果num<=x 则不需要
x<num<=2x 则需要1次 以此类推
如果此时操作次数op<=maxOperations 则可以将x减小

def minimumSize(nums, maxOperations):""":type nums: List[int]:type maxOperations: int:rtype: int"""l,r = 1,max(nums)ans = 0while l<=r:x = (l+r)//2ops = sum((num-1)//x for num in nums)if ops<=maxOperations:ans = xr = x-1else:l = x+1return ans

2/13 1742. 盒子中小球的最大数量

用map存储每个盒子内的小球数

def countBalls(lowLimit, highLimit):""":type lowLimit: int:type highLimit: int:rtype: int"""def func(x):tag = 0while x>0:tag += x%10x = x//10return tagdic = {}ans = 0for i in range(lowLimit,highLimit+1):tag = func(i)dic[tag] = dic.get(tag,0)+1if dic[tag]>ans:ans = dic[tag]return ans

2/14 1552. 两球之间的磁力

最大化最小值 二分判断mid距离是否合法
check检查距离x合法性

def maxDistance(position, m):""":type position: List[int]:type m: int:rtype: int"""def check(x):pre=position[0]cnt = 1for i in range(1,len(position)):if position[i]-pre>=x:pre = position[i]cnt+=1return cnt>=mposition.sort()l,r=1,position[-1]-position[0]ans = -1while l<=r:mid = (l+r)//2if check(mid):ans = midl=mid+1else:r=mid-1return ans

2/15 1706. 球会落何处

模拟小球运动
小球从上至下运动 行数依次增加 col记录当前小球所在列
如果是1 则向右边移动 col+1
如果是-1 则向左边移动 col-1
此时如果碰到左右两侧 则卡住
或者此时的格子状态与之前不同遇到V型 同样卡住
tag判断小球是否顺利通过
最后记录小球的结果

def findBall(grid):""":type grid: List[List[int]]:rtype: List[int]"""m,n = len(grid),len(grid[0])mem = [[[float('inf'),float('inf')]for _ in range(n)] for _ in range(m)]for i in range(n):if grid[m-1][i]==1:mem[m-1][i][0] = imem[m-1][i][1] = -1if i+1<n:if grid[m-1][i+1]==1:mem[m-1][i][1]=i+1else:mem[m-1][i][1]=imem[m-1][i][0] = -1if i-1>=0:if grid[m-1][i-1]==-1:mem[m-1][i][0] = i-1def check(i,j,loc):ans = float('inf')if mem[i][j][loc]!=float('inf'):return mem[i][j][loc]if grid[i][j]==1:if loc==0:if grid[i+1][j]==1:ans = check(i+1,j,1)else:ans = check(i+1,j,0)else:ans = -1if j+1<n and grid[i][j+1]==1:ans = check(i,j+1,0)else:if loc ==0:ans = -1if j-1>=0 and grid[i][j-1]==-1:ans = check(i,j-1,1)else:if grid[i+1][j]==1:ans = check(i+1,j,1)else:ans = check(i+1,j,0)mem[i][j][loc]=ansreturn ansret = []for j in range(n):loc = 0 if grid[0][j]==-1 else 1ret.append(check(0,j,loc))return retdef findBall2(grid):""":type grid: List[List[int]]:rtype: List[int]"""m,n = len(grid),len(grid[0])ans = [-1]*nfor j in range(n):col = jtag = Truefor i in range(m):mv = grid[i][col]col +=mvif col<0 or col>=n or grid[i][col]!=mv:tag = Falsebreakif tag:ans[j]=colreturn ans

2/16 1299. 将每个元素替换为右侧最大元素

从后往前遍历 记录当前遇到最大的值

def replaceElements(arr):""":type arr: List[int]:rtype: List[int]"""cur=-1for i in range(len(arr)-1,-1,-1):tmp=curcur=max(cur,arr[i])arr[i]=tmpreturn arr

相关文章:

LeetCode 每日一题 2025/2/10-2025/2/16

记录了初步解题思路 以及本地实现代码&#xff1b;并不一定为最优 也希望大家能一起探讨 一起进步 目录 2/10 913. 猫和老鼠2/11 1728. 猫和老鼠 II2/12 1760. 袋子里最少数目的球2/13 1742. 盒子中小球的最大数量2/14 1552. 两球之间的磁力2/15 1706. 球会落何处2/16 1299. 将…...

使用 Shiro 和 JPA 结合 MySQL 实现一个简易权限管理系统

1. 项目设置 首先&#xff0c;确保你的项目已经配置好 Maven 或 Gradle 依赖管理工具&#xff0c;并添加以下依赖&#xff1a; Maven 依赖 <dependencies><!-- Shiro 核心库 --><dependency><groupId>org.apache.shiro</groupId><artifactI…...

DeepSeek与医院电子病历的深度融合路径:本地化和上云差异化分析

一、引言 1.1 研究背景与意义 在医疗信息化快速发展的当下,电子病历系统已成为医院信息管理的核心构成。电子病历(EMR)系统,是指医务人员在医疗活动过程中,使用医疗机构信息系统生成的文字、符号、图标、图形、数据、影像等数字化信息,并能实现存储、管理、传输和重现的…...

设计模式:代理模式

代理模式是很常见的设计模式&#xff0c;即使没有专门学习过这种设计模式&#xff0c;在工作中也一定用过这种设计模式。在实际生活中&#xff0c;代理模式也是常见的&#xff0c;比如内阁首辅相对于皇帝&#xff0c;前者是后者的代理&#xff0c;内阁首辅收到奏折时&#xff0…...

141,【1】buuctf web [SUCTF 2019]EasyWeb

进入靶场 代码审计 <?php // 定义函数get_the_flag&#xff0c;功能是处理文件上传相关操作 function get_the_flag() {// 注释说明&#xff1a;webadmin会每隔20分钟删除用户上传的文件$userdir "upload/tmp_" . md5($_SERVER[REMOTE_ADDR]);// 检查用户目录…...

破解微服务疑难杂症:2025年全解决方案

微服务架构已经成为现代软件开发的主流选择&#xff0c;其优势在于能够将复杂的系统拆分为独立的服务模块&#xff0c;方便开发和维护。然而&#xff0c;在微服务的实施过程中&#xff0c;开发者往往会面临许多挑战&#xff0c;如服务间通信、数据一致性、性能优化和故障处理等…...

Node.js 中的 Event 模块详解

Node.js 中的 Event 模块是实现事件驱动编程的核心模块。它基于观察者模式&#xff0c;允许对象&#xff08;称为“事件发射器”&#xff09;发布事件&#xff0c;而其他对象&#xff08;称为“事件监听器”&#xff09;可以订阅并响应这些事件。这种模式非常适合处理异步操作和…...

EasyRTC嵌入式WebRTC视频通话SDK支持Web浏览器、Linux、ARM、Android、iOS

随着互联网技术的飞速发展&#xff0c;实时通信&#xff08;RTC&#xff09;已经成为现代应用中不可或缺的一部分。无论是视频会议、在线教育、远程医疗&#xff0c;还是社交娱乐&#xff0c;实时通信技术都在其中扮演着重要角色。 然而&#xff0c;WebRTC技术在PC和移动端的支…...

pycharm社区版有个window和arm64版本,到底下载哪一个?还有pycharm官网

首先pycharm官网是这一个。我是在2025年2月16日9:57进入的网站。如果网站还没有更新的话&#xff0c;那么就往下滑一下找到 community Edition,这个就是社区版了免费的。PyCharm&#xff1a;适用于数据科学和 Web 开发的 Python IDE 适用于数据科学和 Web 开发的 Python IDE&am…...

【玩转全栈】----Django模板语法、请求与响应

目录 一、引言 二、模板语法 三、传参 1、视图函数到模板文件 2、模板文件到视图函数 四、引入静态文件 五、请求与响应 ?1、请求 2、响应 六、综合小案例 1、源码展示 2、注意事项以及部分解释 3、展示 一、引言 像之前那个页面&#xff0c;太过简陋&#xff0c;而且一个完整…...

网络安全:挑战、技术与未来发展

&#x1f4dd;个人主页&#x1f339;&#xff1a;一ge科研小菜鸡-CSDN博客 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; 1. 引言 在数字化时代&#xff0c;网络安全&#xff08;Cybersecurity&#xff09;已成为全球关注的焦点。随着云计算、大数据、…...

DeepSeek 服务器繁忙的全面解决方案

目录 引文 正文 一、 服务器繁忙的原因分析 二、 解决方案 2.1切换网络 2.2使用网络加速工具 2.3错峰使用DeepSeek 2.4本地部署 2.5调用API 三、官方动态 一、技术研发与产品升级 二、市场合作与商业化进展 三、区域化布局与产业赋能 四、未来规划与社会责任 结语…...

将OpenWrt部署在x86服务器上

正文共&#xff1a;1234 字 40 图&#xff0c;预估阅读时间&#xff1a;2 分钟 如果你问ChatGPT有哪些开源的SD-WAN方案&#xff0c;他会这样答复你&#xff1a; 我们看到&#xff0c;OpenWrt也属于比较知名的开源SD-WAN解决方案。当然&#xff0c;在很久之前&#xff0c;我就发…...

计算机视觉:卷积神经网络(CNN)基本概念(一)

第一章&#xff1a;计算机视觉中图像的基础认知 第二章&#xff1a;计算机视觉&#xff1a;卷积神经网络(CNN)基本概念(一) 第三章&#xff1a;计算机视觉&#xff1a;卷积神经网络(CNN)基本概念(二) 第四章&#xff1a;搭建一个经典的LeNet5神经网络 一、引言 卷积神经网络&…...

企业文件共享中的权限管理与安全风险防范

在企业的日常运营中&#xff0c;文件共享是必不可少的一项工作。然而&#xff0c;文件共享过程中如果权限管理不当&#xff0c;极易引发安全风险&#xff0c;导致企业敏感信息泄露。因此&#xff0c;加强文件共享中的权限管理与安全风险防范&#xff0c;对于保障企业信息安全至…...

使用DeepSeek建立一个智能聊天机器人0.12

为了确保这段代码能够在Windows和Linux系统上都能正常运行,我考虑以下几个方面: 路径分隔符:在Windows和Linux中,文件路径的分隔符不同。Windows使用反斜杠(\),而Linux使用正斜杠(/)。我们可以使用 os.path.join 来处理路径,以确保跨平台兼容性。 消息框:tkinter.…...

国家队出手!DeepSeek上线国家超算互联网平台!

目前,国家超算互联网平台已推出 DeepSeek – R1 模型的 1.5B、7B、8B、14B 版本,后续还会在近期更新 32B、70B 等版本。 DeepSeek太火爆了!在这个春节档,直接成了全民热议的话题。 DeepSeek也毫无悬念地干到了全球增速最快的AI应用。这几天,国内的云计算厂家都在支持Dee…...

Deep seek学习日记1

Deepseek最强大的就是它的深度思考&#xff0c;并且展现了它的思考过程。 五种可使用Deep seek的方式&#xff08;应该不限于这五种&#xff0c;后续嵌入deepseek的应该更多&#xff0c;多了解一点因为官网容易崩~~&#xff09;&#xff1a; 1.deep seek官网 2.硅基流动silicon…...

乐理笔记(持续更新)

单音与音程 单音&#xff1a;由一个音组成。 音程&#xff1a;由两个音组成&#xff0c;表示两个音之间的音高距离。 如何数音程&#xff1a; 单音程&#xff1a;9 - X&#xff0c;性质相反。例如&#xff0c;9度音程减去某个数&#xff0c;性质会相反。 复音程&#xff1a…...

【动态路由】系统Web URL资源整合系列(后端技术实现)【nodejs实现】

需求说明 软件功能需求&#xff1a;反向代理功能&#xff08;描述&#xff1a;apollo、eureka控、apisix、sentinel、普米、kibana、timetask、grafana、hbase、skywalking-ui、pinpoint、cmak界面、kafka-map、nacos、gateway、elasticsearch、 oa-portal 业务应用等多个web资…...

Python|GIF 解析与构建(5):手搓截屏和帧率控制

目录 Python&#xff5c;GIF 解析与构建&#xff08;5&#xff09;&#xff1a;手搓截屏和帧率控制 一、引言 二、技术实现&#xff1a;手搓截屏模块 2.1 核心原理 2.2 代码解析&#xff1a;ScreenshotData类 2.2.1 截图函数&#xff1a;capture_screen 三、技术实现&…...

手游刚开服就被攻击怎么办?如何防御DDoS?

开服初期是手游最脆弱的阶段&#xff0c;极易成为DDoS攻击的目标。一旦遭遇攻击&#xff0c;可能导致服务器瘫痪、玩家流失&#xff0c;甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案&#xff0c;帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...

51c自动驾驶~合集58

我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留&#xff0c;CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制&#xff08;CCA-Attention&#xff09;&#xff0c;…...

树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频

使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析

这门怎么题库答案不全啊日 来简单学一下子来 一、选择题&#xff08;可多选&#xff09; 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘&#xff1a;专注于发现数据中…...

AtCoder 第409​场初级竞赛 A~E题解

A Conflict 【题目链接】 原题链接&#xff1a;A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串&#xff0c;只有在同时为 o 时输出 Yes 并结束程序&#xff0c;否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下&#xff0c;知识图谱凭借其高效的信息组织能力&#xff0c;正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合&#xff0c;探讨知识图谱开发的实现细节&#xff0c;帮助读者掌握该技术栈在实际项目中的落地方法。 …...

Python如何给视频添加音频和字幕

在Python中&#xff0c;给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加&#xff0c;包括必要的代码示例和详细解释。 环境准备 在开始之前&#xff0c;需要安装以下Python库&#xff1a;…...

汇编常见指令

汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX&#xff08;不访问内存&#xff09;XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包

文章目录 现象&#xff1a;mysql已经安装&#xff0c;但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时&#xff0c;可能是因为以下几个原因&#xff1a;1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...