LeetCode 第396场周赛个人题解


 

目录

100284. 有效单词

原题链接

思路分析

AC代码

100275. K 周期字符串需要的最少操作次数

原题链接

思路分析

AC代码

100283. 同位字符串连接的最小长度

原题链接

思路分析

AC代码

100288. 使数组中所有元素相等的最小开销

原题链接

思路分析

AC代码


100284. 有效单词

原题链接





100284. 有效单词

思路分析

直接模拟即可

时间复杂度O(n)

AC代码

class Solution:
    def isValid(self, word: str) -> bool:
        n = len(word)
        if n < 3:
            return False
        f1, f2 = False, False
        st1 = ['a', 'e', 'i', 'o', 'u']
        for x in word:
            if not (str.isdigit(x) or str.isalpha(x)):
                return False
            if str.lower(x) in st1:
                f1 = True
            if str.isalpha(x) and (not str.lower(x) in st1):
                f2 = True
        return f1 and f2

100275. K 周期字符串需要的最少操作次数

原题链接

100275. K 周期字符串需要的最少操作次数

思路分析

我们所有整除k下标开始的长度为k的字符串中的最大出现次数ma

那么答案就是n / k - ma

时间复杂度O(n)

AC代码

class Solution:
    def minimumOperationsToMakeKPeriodic(self, word: str, k: int) -> int:
        n = len(word)
        cnt = Counter([word[i:i+k] for i in range(n) if i % k == 0])
        return n // k - cnt.most_common(1)[0][1]

100283. 同位字符串连接的最小长度

原题链接

100283. 同位字符串连接的最小长度

思路分析

比赛的时候用gcd,三行代码直接过了,赛后发现一堆人说不对,然后发现中文题目翻译错了真无语了,赛后复测的话这次要掉大分了

由于同位字符串长度整除s的长度,我们枚举s长度的因子,然后滑窗判断是否成立,成立就返回

时间复杂度:O(n^(3/2))

AC代码

class Solution:
    def minAnagramLength(self, s: str) -> int:
        i = 1
        n = len(s)
        while i <= n:
            if n % i:
                i += 1
                continue
            cnt = Counter(s[:i])
            f = 1
            for j in range(i, n, i):
                if Counter(s[j:j+i]) != cnt:
                    f = 0
                    break
            if f:
                return i
            i += 1

100288. 使数组中所有元素相等的最小开销

原题链接

100288. 使数组中所有元素相等的最小开销

思路分析

对于n种物品,每种物品有若干个,我们可以一次拿一个物品也可以一次拿两个不同的物品,如果我们两个两个拿,我们最多拿多少次?

建议先看这道题:

贪心,LeetCode 1953. 你可以工作的最大周数

通过上面这道题,我们可以得到结论,对于上面的物品,我们可以得到的最长两两不同的物品序列长度为min(s + ma, s * 2 + 1),其中ma为最大物品数,s为除去最多的那种物品的物品数的和

那么我们每次拿两个不同的物品可以拿的最大次数就是上面的结果除以2向下取余即可

然后看本题

如果n = 1,2我们进行特判

如果cost1 * 2 <= cost2,那么两个两个加没有优势,我们把每个数字加到序列中最大的数的代价就是答案

cost1 * 2 > cost2 时,显然两个两个加比单独加要更优,我们这样考虑

把所有数字加到某个相同的数字ma,等价于在[ma - nums[i]]这样一个新数组中,每次拿两个不同的物品或者每次拿一个物品,把所有物品拿完的最小代价

我们已知两个两个拿比单独拿更优,那么尽可能多的两个两个拿,然后剩下的单独拿就是最优解

我们发现最终结果取决于ma,ma最小是我们构造出的新数组的最大值

我们ma增加1,s会增加n,故:

ma < s - 1时,ma增加会导致两个两个拿和单独拿的次数都增加,不会得到更优解

ma > s + 1时,ma增加,两个两个拿次数增加,单独拿次数可能减小,可能得到更优解

而ma增长速度小于s,所以最多增加ma初始值次,所以我们枚举初始ma到ma * 2过程中的结果即可

时间复杂度O(n + U),U为值域上限

更快的做法是三分,因为我们把上面分析更进一步会发现答案为一个单峰函数,而求解单峰函数的经典做法就是三分,比赛还是求稳直接枚举得了

AC代码

mod = 10**9 + 7
class Solution:
    def minCostToEqualizeArray(self, nums: List[int], cost1: int, cost2: int) -> int:
        ma = max(nums)
        nums = [ma - x for x in nums]

        if cost2 > cost1 * 2:
            return sum([x * cost1 for x in nums]) % mod

        s = sum(nums)
        ma = max(nums)
        op2 = min(s // 2, s - ma)
        op1 = s - op2 * 2
        ret = op1 * cost1 + op2 * cost2

        n = len(nums)
        if n == 1:
            return 0
        if n == 2:
            return ret % mod
        
        t = ma
        for _ in range(t):
            ma += 1
            s += n

            op2 = min(s // 2, s - ma)
            op1 = s - op2 * 2
            ret = min(ret, op1 * cost1 + op2 * cost2)

        return ret % mod

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

知识库工具:付费的HelpLook AI知识库比免费的牵牛易帮好在哪里

在知识管理的领域中&#xff0c;选择合适的知识库工具对于企业来说很重要。市面上有很多知识库产品&#xff0c;有付费的和免费的&#xff0c;但是还是有很多企业会选择使用付费的&#xff0c;而不是免费的。这是为什么呢&#xff1f;这就是今天要探讨的问题&#xff0c;下面就…

vs配置cplex12.10

1.创建c空项目 2.修改运行环境 为release以及x64 3.创建cpp文件 4.鼠标右键点击项目中的属性 5.点击c/c&#xff0c;点击第一项常规&#xff0c;配置附加库目录 5.添加文件索引&#xff0c;主要用于把路径导进来 6.这一步要添加的目录与你安装的cplex的目录有关系 F:\program…

idea2023.2.5的控制台动态配置当前环境

一、idea2023.2.5的控制台动态配置当前环境 1.1、idea版本 1.2、配置方式 1.2.1、方式一 1.2.2、方式二 1.3、参考 https://blog.csdn.net/xiaoheihai666/article/details/127757658

举个栗子!Minitab 技巧(8):用 PLS 偏最小二乘分析大豆脂肪影响因素

在上一个 &#x1f330; 中&#xff0c;我们用 Minitab 最小二乘法验证了两个变量&#xff08;单位桶数与运输时间&#xff09;之间是否存在某种关系。那么&#xff0c;在更复杂的场景中&#xff0c;如何验证一组预测变量和一个或多个连续响应变量之间的关系&#xff1f; 假设…

Pandas入门篇(三)-------数据可视化篇2(pandas-plot篇)

目录 概述一、格式1. 生成pandas.plotting对象来生成图表2. 调用plot()函数来生成图表3.支持的图表类型 二、单变量绘图常用图表1. 柱状图&#xff08;bar&#xff09;使用场景代码实现 2. 折线图&#xff08;line&#xff09;&#xff08;默认即为折线图&#xff09;适用场景代…

体育老师工资高吗,奖金有吗

教师的薪资水平与多种因素相关&#xff0c;包括教育经验、工作地点、学校类型以及个人的教学成果等。在讨论体育教师的工资问题时&#xff0c;不能仅仅关注数字&#xff0c;更应了解教育价值和个人发展。 初中体育教师的工资水平受多种因素影响。根据网络统计的数据&#xff0c…

[Spring Cloud] (6)gateway整体加解密

文章目录 简述整体效果后端增加配置nacos增加配置GlobalConfig 添加请求整体解密拦截器DecryptionFilter添加响应整体解密拦截器EncryptionFilter 前端请求拦截器添加整体加密逻辑请求头中添加sessionId 响应拦截器添加整体解密逻辑 简述 本文网关gateway&#xff0c;微服务&a…

阅读欣赏推荐之(七)——纪录片《一根绳子有多长》

《一根绳子有多长》是英国广播公司&#xff08;BBC&#xff09;在2009年出品的纪录片&#xff0c;这部纪录片以一跟绳子作为主角&#xff0c;通过运用现代科技手段&#xff0c;结合历史学、文化学、物理学等多个领域的知识&#xff0c;对绳子进行了全方位的研究。在古代&#x…

诺基亚贝尔探访上海斯歌,共探创新合作新机遇

近日&#xff0c;上海斯歌K2 BPM迎来重要客户考察交流活动。来自诺基亚贝尔的首席数字官刘少勇一行莅临了上海斯歌K2 BPM 的武汉研发中心&#xff0c;并对上海斯歌在BPM业务流程管理领域的研发成果及交付能力给予了高度肯定。 此次活动不仅加深了双方的战略合作&#xff0c;也为…

flask 前后台文件多张图片api;streamlit、gradio多图片页面展示

1、flask 前后台文件多张图片api send_file 传递zip&#xff1a; send_file(zip_data, mimetype‘application/zip’, as_attachmentTrue, download_name‘images.zip’) from flask import Flask, Response, request,send_file from PIL import Image import torch import i…

数据库大作业——基于qt开发的图书管理系统 (一)环境的配置与项目需求的分析

前言 博主最近数据库原理结课要做课程设计了,要求开发基于数据库实现的图书管理系统&#xff0c;博主想了想决定做一个基于Qt的图书管理系统,博主在此之前其实也没有用过多少Qt&#xff0c;仅以此专栏记录博主学习与开发的全过程&#xff0c;大家一起学习&#xff0c;一起进步…

使用固定公网地址远程访问开源服务器运维管理面板1Panel管理界面

文章目录 前言1. Linux 安装1Panel2. 安装cpolar内网穿透3. 配置1Panel公网访问地址4. 公网远程访问1Panel管理界面5. 固定1Panel公网地址 前言 1Panel 是一个现代化、开源的 Linux 服务器运维管理面板。高效管理,通过 Web 端轻松管理 Linux 服务器&#xff0c;包括主机监控、…

npm install 会报错npm audit错误,会提示你有多少个漏洞需要结局等

npm install 会报错 npm audit… 错误&#xff0c;会提示你有多少个漏洞需要结局&#xff0c;对应的包版本不应该低于多少等等问题 当使用npm i 命令的时候会出现以下问题 如果是个新手的话&#xff0c;建议直接关闭npm的audit检查。这样可以保证npm的audit不会影响你的初始…

文献速递:深度学习医学影像心脏疾病检测与诊断--从SPECT/CT衰减图中深度学习冠状动脉钙化评分提高了对重大不良心脏事件的预测

Title 题目 Deep Learning Coronary Artery Calcium Scores from SPECT/CT Attenuation Maps Improve Prediction of Major Adverse Cardiac Events 从SPECT/CT衰减图中深度学习冠状动脉钙化评分提高了对重大不良心脏事件的预测 01 文献速递介绍 低剂量非门控CT衰减校正&am…

ASP.NET网络商店销售管理系统的设计与实现

摘 要 随着软件技术的不断进步和发展&#xff0c;信息化的管理方式越来越广泛的应用于各个领域&#xff0c;对于任何网站系统的管理来说开发一套现代化的成员管理软件是十分必要的。通过这样的软件系统&#xff0c;可以做到成员的规范管理和快速查询&#xff0c;从而减少管理…

TPV-W5 24V 48V 系列——正负双输出和单输出,工业级环境温度,用于PCB安装的国际标准结构

TPV-W5系列提供正负双输出和单输出&#xff0c;工业级环境温度&#xff0c;用于PCB安装的国际标准结构。此系列产品小巧&#xff0c;效率高&#xff0c;低输出纹波及能承受3000V以上的耐压&#xff0c;用于需要正负电压或单输出和高隔离电压的场合。封装有SIP和DIP可选。

JAVA基础之线程池原理与源码简读

线程 线程是调度CPU资源的最小单位&#xff0c;线程模型分为KLT和ULT模型&#xff0c;JVM使用的KLT模型java线程与OS线程保持1:1的映射关系&#xff0c;也就是说每一个java线程对应操作系统一个线程。Java线程有以下几种生命状态&#xff1a; NEW&#xff1a;新建状态RUNNABL…

单调栈|503.下一个更大元素II

力扣题目链接 class Solution { public:vector<int> nextGreaterElements(vector<int>& nums) {// 拼接一个新的numsvector<int> nums1(nums.begin(), nums.end());nums.insert(nums.end(), nums1.begin(), nums1.end());// 用新的nums大小来初始化resu…

我独自升级崛起在哪下载 我独自升级电脑PC端下载教程分享

将于5月8日在全球舞台闪亮登场的动作角色扮演游戏《我独自升级崛起》&#xff0c;灵感源自同名热门动画与网络漫画&#xff0c;承诺为充满激情的游戏玩家群体带来一场集深度探索与广阔体验于一身的奇幻旅程。该游戏以独特的网络武侠世界观为基底&#xff0c;展现了一位普通人踏…

[Java、Android面试]_22_APP启动流程(中频问答)

欢迎查看合集&#xff1a; Java、Android面试高频系列文章合集 本人今年参加了很多面试&#xff0c;也有幸拿到了一些大厂的offer&#xff0c;整理了众多面试资料&#xff0c;后续还会分享众多面试资料。 整理成了面试系列&#xff0c;由于时间有限&#xff0c;每天整理一点&am…
最新文章