【Leetcode每日一题】子序列宽度之和,匹配子序列的单词数,最大平均值和的分组

news2024/11/17 19:46:01

891. 子序列宽度之和

在这里插入图片描述
计算的是【贡献】。
首先观察发现,顺序不影响结果。然后比如1,作为最大元素贡献为0,而作为最小元素贡献为每个子序列的【最大-1】,一共有多少个作为最小元素的子序列,对答案的贡献就是-1*(个数)。
考虑子序列个数,比他小的不能选,那么比他大的n-1个可选可不选,是2的n-1次方个。
这里放一个0x3f的解法图:
请添加图片描述

792. 匹配子序列的单词数

在这里插入图片描述
这个题使用多指针的想法是很自然的,遍历s的同时更新每个word的指针。但难点在于复杂度,1 <= s.length <= 5 * 104 的长度,使得遍历s更新words的操作是不可取的。
所以想到了根据word中的字符去匹配s中的字符,对每一个c而言,不再检查所有的word,而是直接通过字典获取这是第几个word的第几个字母,直到匹配到和word长度一样,则ans+=1。

class Solution:
    def numMatchingSubseq(self, s: str, words: List[str]) -> int:
        p = defaultdict(list)
        for i, w in enumerate(words):
            p[w[0]].append((i, 0))
        ans = 0
        for c in s:
            q = p[c]
            p[c] = []
            for i, j in q:
                j += 1
                if j == len(words[i]):
                    ans += 1
                else:
                    p[words[i][j]].append((i, j))
        return ans

813. 最大平均值和的分组

在这里插入图片描述
首先一条是:分的组越多,得到的结果越大。
使用dp[i][j]表示区间[0, i-1]切分成j个子数组。
在这里插入图片描述
第一条很好理解,就是求一整个大组的平均值。这里可以使用前缀和的方式求。
第二条则引入x,x是划分的下标。因为j个组相比j-1个组而言,不一定是哪里划分的,所以需要枚举x的位置。
而因为是把前i个字母切分成j个,所以需要x>=j-1

class Solution:
    def largestSumOfAverages(self, nums: List[int], k: int) -> float:
        n = len(nums)
        prefix = list(accumulate(nums, initial=0))
        dp = [[0.0] * (k + 1) for _ in range(n + 1)]
        for i in range(1, n + 1):
            dp[i][1] = prefix[i] / i
        for j in range(2, k + 1):
            for i in range(j, n + 1):
                for x in range(j - 1, i):
                    dp[i][j] = max(dp[i][j], dp[x][j - 1] + (prefix[i] - prefix[x]) / (i - x))
        return dp[n][k]

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

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

相关文章

【✨十五天搞定电工基础】正弦交流电路的分析(下)

目录 五、复杂正弦交流电路的分析&#xff08;下&#xff09; 六、功率因数的提高 七、谐振电路 1、串联谐振 2、并联谐振 八、课后习题 1、正弦量三要素&#xff0c;相位 2、RLC串联问题 3、复杂正弦交流电路问题 4、谐振问题 五、复杂正弦交流电路的分析&#x…

Metabase学习教程:权限-4

高级数据沙盒&#xff1a;限制对列的访问 了解如何使用已保存的SQL查询对表进行沙盒处理&#xff0c;并根据用户属性限制用户可以查看的列。 我们的文章行权限涵盖了沙盒&#xff08;商业版本). 我们将沙盒定义为一种根据用户身份指定用户可以访问哪些数据的方法&#xff0c;…

【TOTP】基于时间的动态密码及其工程实践

探究了常见的动态密码的实现方式及其底层原理&#xff0c;并基于java做出了工程实践。 文章目录A.来源于一个现象的好奇B.2FAC.TOTP1.什么是TOTP2.原理详解&#xff08;基于java-totp项目分析&#xff09;3.这样真的安全吗4.常见的支持TOTP的软件1.Google Authenticator2.Micro…

RCNN学习笔记-MobileNet3

更新Block(bneck倒残差结构) 1.加入SE&#xff08;自注意力模块squeeze-and-excite bottleneck&#xff09;模块。当stride1&#xff08;高和宽是不会变化的&#xff09;且inputc outputc才有shortcut连接。 相反&#xff0c;我们将它们全部替换为扩展层中通道数量的1/4。我…

功率放大器输出阻抗的影响因素有哪些原因

关于功率放大器的疑问有很多&#xff0c;前阵子有人咨询影响功率放大器输出阻抗的有哪些因素&#xff0c;今天就请安泰电子来为大家解释&#xff0c;同时再为大家科普一下功率放大器的知识。 图&#xff1a;信号源和负载的放大器的简化模型 在搞清楚影响功率放大器输出阻抗因素…

速锐得解码本田雅阁混动版整车网关CAN总线通信协议DBC控制策略

本田汽车增城工厂就在附近50多公里的地方&#xff0c;和比亚迪汽车差不多&#xff0c;无论怎么跑都得1个多小时&#xff0c;也因为近水楼台的天然优势&#xff0c;而我们也与本田安全驾驶中心有多次深度的合作。碗里的肉&#xff0c;基本上都是上过了速锐得砧板。 近&#xff0…

m基于FPGA的半带滤波器verilog设计,对比普通结构以及乘法器复用结构

目录 1.算法描述 2.仿真效果预览 3.verilog核心程序 4.完整FPGA 1.算法描述 HBF模块由半带滤波器&#xff08;HBF&#xff09;和抽取模块组成。该模块的任务是实现2倍抽取进一步降低信号采样速率。由于HBF的冲激响应h(k)除零点外其余偶数点均为零&#xff0c;所以用HBF实现…

5G+无人驾驶融合创新,赋能港口智能化发展!

导语 | 在新一轮科技革命的时代背景下&#xff0c;5G 技术和无人驾驶的创新融合&#xff0c;使得我国当前港口的智慧化建设走在了世界的前列&#xff0c;智慧港口的发展不断深入。此次&#xff0c;我们邀请到了飞步科技的联合创始人兼 CTO、腾讯云 TVP 杨政老师&#xff0c;他将…

【LeetCode】No.116. Populating Next Right Pointers in Each Node -- Java Version

题目链接&#xff1a;https://leetcode.com/problems/populating-next-right-pointers-in-each-node/description/ 1. 题目介绍&#xff08;&#xff09; You are given a perfect binary tree where all leaves are on the same level, and every parent has two children. T…

安卓APP源码和设计报告——小说阅读器

班级 姓名 学号 答辩情况 考核项满分成绩得分掌握计算机系统软硬件资源管理的原理&#xff0c;能够设计针对计算机领域复杂工程问题的解决方案&#xff0c;设计满足特定需求的软硬件系统&#xff0c;并具有对解决方案在特定约束条件下进行工程设计和开发的能力。30能够针对计…

Excel 函数大全之 INTERCEPT function 获取线性回归线的截距

描述 使用现有的 x 值和 y 值计算直线与 y 轴相交的点。截点基于通过已知 x 值和已知 y 值绘制的最佳拟合回归线。当您想要在自变量为 0(零)时确定因变量的值时,请使用 INTERCEPT 函数。例如,当您的数据点是在室温或更高温度下获取的时,您可以使用 INTERCEPT 函数预测金属…

BIGEMAP APP导入/导出文件\照片(kml\shp\cad(dxf)\txt\excel)

APP数据导入&#xff1a; 1、kml\bmv文件通过QQ、微信等发送到手机端&#xff0c;在手机端下载文件&#xff0c;然后选择其他应用打开&#xff0c;选择bigemap打开就可以了。 2、其他数据导入&#xff08;其他数据包括&#xff1a;shp、kml\kmz、CAD的dxf、txt、excel、csv等…

java通过idea进行远程调试

1&#xff0c;基于SpringBoot使用IDEA工具 在pom.xml中配置 里配置jvmArguments参数 -Xdebug -Xrunjdwp:transportdt_socket,address8008,servery,suspendn&#xff1a; <build><plugins><plugin><groupId>org.springframework.boot</groupId>…

MySQL是怎样加锁的

是不是很多人都对 MySQL 加行级锁的规则搞的迷迷糊糊&#xff0c;对记录一会加的是 next-key 锁&#xff0c;一会加是间隙锁&#xff0c;一会又是记录锁。这次就带大家浅浅地聊一下MySQL是怎样加锁的。 什么 SQL 语句会加行级锁&#xff1f; InnoDB 引擎是支持行级锁的&#…

第十二章 Golang家庭收支记账软件项目

1.项目开发流程 2.项目需求说明 模拟实现基于文本界面的《家庭记账软件》该软件能够记录家庭的收入&#xff0c;支出&#xff0c;并能够打印收支明细表 3.项目的界面 4.项目代码实现 实现基本功能&#xff08;先使用面向过程&#xff0c;后面改成面向对象&#xff09; 功能1…

【Shell 脚本速成】10、Shell 流程控制 while 循环

目录 一、while 介绍 1.1 while 语法 二、while 与 shell 运算 2.1 比较运算 2.2 逻辑运算 2.3 文件类型判断 2.4 特殊条件 三、while 与循环控制语句 3.1 sleep 语句 3.2 break 3.3 continue 四、while 嵌套其他语句 4.1 while 嵌套 if 4.2 while 嵌套 for 4.…

XSKY星晨天合-后台开发岗

一面 TCP与UDP区别UDP的优点&#xff08;实时性好&#xff0c;占用资源低&#xff0c;无需三次握手较少被黑客利用的机会&#xff09;UDP增加哪些功能可以实现更可靠、更稳定、且保证有序&#xff08;超时重传、滑动窗口流量控制、序号/确认序号&#xff0c;面试官提到了kcp&a…

使用HTML制作静态宠物网站——蓝色版爱宠之家(HTML+CSS)

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

【ES6】阮一峰ES6学习(六) Proxy(一)

Proxy1. 前言2. 使用1. get()方法2. set()方法未完待续1. 前言 es6中全新设计了一个叫Proxy的类型&#xff0c;Proxy这个词的原意是代理&#xff0c;用在这里表示由它来”代理“某些操作&#xff0c;可以译为”代理器“&#xff0c;Proxy就是专门为对象设置访问代理器的&#…

【1775. 通过最少操作次数使数组的和相等】

来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 描述&#xff1a; 给你两个长度可能不等的整数数组 nums1 和 nums2 。两个数组中的所有值都在 1 到 6 之间&#xff08;包含 1 和 6&#xff09;。 每次操作中&#xff0c;你可以选择 任意 数组中的任意一个整数&…