Leetcode 3003. Maximize the Number of Partitions After Operations

  • Leetcode 3003. Maximize the Number of Partitions After Operations
    • 1. 解题思路
    • 2. 代码实现
  • 题目链接:10038. Maximize the Number of Partitions After Operations

1. 解题思路

这一题我看实际比赛当中只有72个人做出来,把我吓得够呛,还以为会很难,不过实际做了之后发现其实挺简单的,不知道啥情况……

思路上来说,这道题还是动态规划的思路,要考虑能够分割的partition的最大数目,我们只需要考察每一位上的字符是否需要发生变化以及变化前后分割数目的变化即可。

显然,如果一个字符在当前的partition当中没有出现过,那么这个字符显然不需要进行变化,因为不会因此而产生额外的收益。

而如果该字符在当前partition当中已经出现过,但是变化的次数已经过了,那么我们同样不需要进行考虑,只能顺序进行partition的切分看看能分割成多少个partition。

而如果该字符在当前partition当中已经出现过,且变换的机会还没使用,我们就要遍历一下将其变换成所有当前partition当中还未出现过的字符以及保留变换机会不在此进行变换的情况下能够获得的partition的最大值返回即可。

而关于当前partition当中已出现过哪些字符,我们可以用一个int值来记录一下各个字符是否已经有出现过。

此时,总的时间复杂度就是 O ( 26 × 2 × N ) O(26 \times 2 \times N) O(26×2×N)

2. 代码实现

给出python代码实现如下:

class Solution:def maxPartitionsAfterOperations(self, s: str, k: int) -> int:if len(set(s)) < k or k == 26:return 1n = len(s)@lru_cache(None)def dp(idx, change, status):if idx >= n:return 0 if status == 0 else 1loc = ord(s[idx]) - ord('a')if status & (1<<loc) == 0:if Counter(bin(status))["1"] == k:return 1 + dp(idx, change, 0)else:return dp(idx+1, change, status | (1<<loc))else:ans = dp(idx+1, change, status)if change > 0:if Counter(bin(status))["1"] == k:for i in range(26):if status & (1 << i) == 0:ans = max(ans, 1 + dp(idx+1, change-1, 1 << i))else:for i in range(26):if status & (1 << i) == 0:ans = max(ans, dp(idx+1, change-1, status | (1 << i)))return ansreturn dp(0, 1, 0)

提交代码评测得到:耗时719ms,占用内存119.8MB。

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

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

相关文章

pip install simctg 报错

pip install simctg python setup.py egg_info did not run successfully. │ exit code: 1 ╰─> [15 lines of output] The ‘sklearn’ PyPI package is deprecated, use ‘scikit-learn’ rather than ‘sklearn’ for pip commands. Here is how to fix this error i…

【win11 绕过TPM CPU硬件限制安装】

Qt编程指南 VX&#xff1a;hao541022348 ■ 下载iso文件■ 右键文件点击装载出现如下问题■ 绕过TPM CPU硬件限制安装方法■ 虚拟机安装win11 ■ 下载iso文件 选择Windows11 &#xff08;multi-edition ISO&#xff09;在选择中文 ■ 右键文件点击装载出现如下问题 ■ 绕过T…

Ubuntu下Lighttpd服务器安装,并支持PHP

1、说明 Lighttpd 是一个德国人领导的开源Web服务器软件&#xff0c;其根本的目的是提供一个专门针对高性能网站&#xff0c;安全、快速、兼容性好并且灵活的web server环境。具有非常低的内存开销、cpu占用率低、效能好以及丰富的模块等特点。 Lighttpd是众多OpenSource轻量级…

New!2024最新ChatGPT提示词开源项目:GPT Prompts Hub - 专注于深化对话质量和探索更复杂的对话结构

&#x1f31f; GPT Prompts Hub &#x1f31f; 欢迎来到 “GPT Prompts Hub” 存储库&#xff01;探索并分享高质量的 ChatGPT 提示词。培养创新性内容&#xff0c;提升对话体验&#xff0c;激发创造力。我们极力鼓励贡献独特的提示词。 在 “GPT Prompts Hub” 项目中&#…

Docker安装sentinel控制台

1、拉取镜像&#xff0c;直接使用run命令&#xff0c;如果说本地没有镜像就会直接去远程仓库拉取&#xff1a; docker run -d \ -p 8858:8858 \ --name sentinel-dashboard \ --network demo \ -e AUTH_USERNAMEsentinel \ -e AUTH_PASSWORD123456 \ bladex/sentinel-dashboa…

特征工程(一)

特征工程&#xff08;一&#xff09; 什么是特征工程 简单来讲将数据转换为能更好地表示潜在问题的特征&#xff0c;从而提高机器学习性能 特征工程包含的内容 转换数据的过程特征更好地表示潜在问题提高机器学习性能 数据和机器学习的基础知识 数据基础 以下为数据的一…

使用 Windows 调试器查找 GDI 泄漏

文章目录 介绍为什么!htrace命令无法使用?总结附:GDI使用的几个注意点:本文将带您了解如何使用 Windows 调试器跟踪 GDI 句柄泄漏,并了解如何修复它们。 介绍 本文是有关使用 Windows 调试器查找和修复 GDI 句柄泄漏的演练。Windows调试器应该是最后的手段,首先在整个代…

密码学:一文读懂非对称密码体制

文章目录 前言非对称密码体制的保密通信模型私钥加密-公钥解密的保密通信模型公钥加密-私钥解密的保密通信模型 复合式的非对称密码系统散列函数数字签名数字签名满足的三个基本要求先加密还是先签名&#xff1f;数字签名成为公钥基础设施以及许多网络安全机制的基础什么是单向…

STM32 基础知识(探索者开发板)--115讲 OLED

引用http://t.csdnimg.cn/hV6Ox 该函数中 void oled_refresh_gram(void) {uint8_t i, n;for (i 0; i < 8; i){oled_wr_byte (0xb0 i, OLED_CMD); /* 设置页地址&#xff08;0~7&#xff09; */oled_wr_byte (0x00, OLED_CMD); /* 设置显示位置—列低地址 */oled_wr…

桃花谷之恋

在一个古老而神秘的山林之中&#xff0c;有一片被人们称之为“桃花谷”的地方。这里四季如春&#xff0c;桃花盛开&#xff0c;美不胜收。然而&#xff0c;传说中&#xff0c;桃花谷深处隐藏着一个神秘的秘密——那是一个充满了桃花妖的世界。 在这片桃花谷中&#xff0c;有一…

图表征模型研究

图表征对于知识图谱是很重要的&#xff0c;如何将图进行embedding&#xff0c;并输入到深度学习模型中&#xff0c;是一个热点问题。 1. GraphSage模型 主要应用于同构图中&#xff0c;是一种归纳式的图表征模型&#xff0c;首先从一个图中训练出embedding方法&#xff0c;在…

19.Linux Shell任务控制

文章目录 Linux Shell任务控制1)信号通过键盘生成信号trap 命令捕获信号 2)在后台运行脚本命令后加 & 符使用nohub命令 3)作业控制4)调度优先级nice命令renice 命令 5)定时运行作业at定期执行命令reference 欢迎访问个人网络日志&#x1f339;&#x1f339;知行空间&#x…

YOLOv8 Ultralytics:使用Ultralytics框架进行姿势估计

YOLOv8 Ultralytics&#xff1a;使用Ultralytics框架进行姿势估计 前言相关介绍前提条件实验环境安装环境项目地址LinuxWindows 使用Ultralytics框架进行姿势估计参考文献 前言 由于本人水平有限&#xff0c;难免出现错漏&#xff0c;敬请批评改正。更多精彩内容&#xff0c;可…

HarmonyOS4.0系统性深入开发13根据卡片状态刷新不同内容

根据卡片状态刷新不同内容 相同的卡片可以添加到桌面上实现不同的功能&#xff0c;比如添加两张桌面的卡片&#xff0c;一张显示杭州的天气&#xff0c;一张显示北京的天气&#xff0c;设置每天早上7点触发定时刷新&#xff0c;卡片需要感知当前的配置是杭州还是北京&#xff…

计算机创新协会冬令营——暴力枚举题目06

我给大家第一阶段的最后一道题就到这里了&#xff0c;下次得过段时间了。所以这道题简单一点。但是足够经典 下述题目描述和示例均来自力扣&#xff1a;两数之和 题目描述 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target …

Transformer简略了解

Transformer出自论文&#xff1a;《Attention Is All You Need》 该论文的提出&#xff0c;对RNN循环神经网络产生了冲击&#xff0c;席卷了自然语言处理(NLP)领域&#xff0c;后续的GPT4.0版本也是根据其进行训练优化的 一、Transformer主体架构 可以简化分为Encoders和Decod…

nginx部署前端项目自动化脚本

文章目录 配置入口服务器nginx的conf.d使用docker创建一个nginx配置自动化脚本 前言 将项目 通过nginx 部署到 新的服务器 通过nginx反向代理出去 配置入口服务器nginx的conf.d 一般在这个文件夹下 找不到使用 find / -name nginx 2>/dev/null 找到nginx 的位置如果有些没有…

WPF 导航界面悬浮两行之间的卡片 漂亮的卡片导航界面 WPF漂亮渐变颜色 WPF漂亮导航头界面 UniformGrid漂亮展现

在现代应用程序设计中&#xff0c;一个漂亮的WPF导航界面不仅为用户提供视觉上的享受&#xff0c;更对提升用户体验、增强功能可发现性和应用整体效率起到至关重要的作用。以下是对WPF漂亮导航界面重要性的详尽介绍&#xff1a; 首先&#xff0c;引人入胜的首页界面是用户与软…

QLabel文字两端对齐解决方案

QLabel文字两端对齐解决方案 Qt本身是支持文字两端对齐的&#xff0c;但需要同时使用Qt::AlignJustify和Qt::TextJustificationForced两个设置。但这两个设置入口不一样。 Qt::AlignJustify用于setAlignment、setTextAlignment等接口&#xff0c;Qt::TextJustificationForced…

【Flet教程】使用Flet以Python创建TODO应用程序

Flet是基于Python实现的Flutter图形界面GUI。除了使用Python&#xff0c;具备美观、简洁、易用&#xff0c;还有Flutter本身的跨平台&#xff08;安卓、iOS、Win、Mac、Web&#xff09;、高性能、有后盾的特点。下面是0.18版官方TODO APP教程&#xff0c;为了准确&#xff0c;保…