leetcode3098. 求出所有子序列的能量和


官解

class Solution(object):# 定义常量mod = int(1e9 + 7)  # 模数,用于防止结果溢出inf = float('inf')  # 无穷大,用于初始化时的特殊值def sumOfPowers(self, nums, k):n = len(nums)  # 数组长度res = 0  # 用于存储最终结果# 三维动态规划表,d[i][p][v] 表示以 nums[i] 结尾的长度为 p 的子序列,最小绝对差为 v 的频次d = [[defaultdict(int) for _ in range(k + 1)] for _ in range(n)]nums.sort()  # 对 nums 进行排序,确保子序列的顺序for i in range(n):# 初始化:长度为 1 的子序列,最小绝对差为无穷大,频次为 1d[i][1][self.inf] = 1for j in range(i):# 计算 nums[i] 和 nums[j] 之间的绝对差diff = abs(nums[i] - nums[j])# 更新长度为 p 的子序列的最小绝对差,其中 p 从 2 到 kfor p in range(2, k + 1):for v, cnt in d[j][p - 1].items():# 更新 d[i][p][min(diff, v)]d[i][p][min(diff, v)] = (d[i][p][min(diff, v)] + cnt) % self.mod# 计算结果:遍历所有以 nums[i] 结尾的长度为 k 的子序列for v, cnt in d[i][k].items():# 累加 v * cnt 到 res 中,并取模res = (res + v * cnt % self.mod) % self.modreturn res  # 返回最终结果

Chatgpt解

这段代码实现了一个名为sumOfPowers的方法,它的目标是计算给定数组 nums 中所有长度为 k 的子序列的最小绝对差的和,并将结果对 1e9 + 7 取模。

代码分解与解释

变量和数据结构
  • mod = int(1e9 + 7): 模数,用于防止结果溢出。
  • inf = float('inf'): 表示无穷大,用于初始化时的特殊值。
  • d = [[defaultdict(int) for _ in range(k + 1)] for _ in range(n)]: 三维动态规划表,用于存储子序列的最小绝对差。
    • d[i][p] 表示以 nums[i] 结尾的长度为 p 的子序列,其最小绝对差的频次。
    • d[i][p][v] 表示上述子序列中,最小绝对差为 v 的子序列数量。
算法步骤
  1. 初始化:

    • n = len(nums): 数组 nums 的长度。
    • res = 0: 用于存储最终结果。
    • nums.sort(): 对 nums 进行排序,确保子序列的顺序。
    • 初始化 d[i][1][inf] = 1,表示长度为 1 的子序列,最小绝对差为无穷大。
  2. 动态规划填表:

    • 遍历数组的每一个元素 nums[i]:
      • 对于每一个之前的元素 nums[j] (其中 j < i):
        • 计算 nums[i]nums[j] 之间的绝对差 diff
        • 更新长度为 p 的子序列的最小绝对差,其中 p 从 2 到 k:
          • 对于 d[j][p-1] 中的每个 vcnt:
            • 更新 d[i][p][min(diff, v)],其中 v 是子序列的最小绝对差,cnt 是其出现的频次。
            • 使用 min(diff, v) 确保当前子序列的最小绝对差。
  3. 计算结果:

    • 遍历所有以 nums[i] 结尾的长度为 k 的子序列:
      • 对于每个最小绝对差 v 和其出现的频次 cnt:
        • 累加 v * cntres 中,并取模。
返回结果
  • 返回 res,即所有长度为 k 的子序列的最小绝对差的和,并对 1e9 + 7 取模。

代码的关键点

  • 使用三维动态规划表 d 来存储子序列信息。
  • 确保子序列按照递增顺序进行计算,避免重复计算。
  • 通过 min(diff, v) 保持子序列的最小绝对差。

总结

这段代码通过动态规划的方法有效地计算了所有长度为 k 的子序列的最小绝对差,并利用模数 1e9 + 7 处理可能出现的大数溢出问题。代码的核心思想是利用前缀子序列的信息来逐步构建长度为 k 的子序列,并在构建过程中不断更新最小绝对差。

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

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

相关文章

七、SpringBoot日志

1. 得到日志对象 import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; //打印日志…

【C语言】数组栈的实现

栈的概念及结构 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端 称为栈顶&#xff0c;另一端称为栈底。栈中的数据元素遵守后进先出LIFO&#xff08;Last In First Out&#xff09;的原则。 压栈&#…

springboot校园跑腿服务系统-计算机毕业设计源码15157

摘要 本文介绍了一种基于Springboot和uniapp的校园跑腿服务系统的设计与实现。该系统旨在为大学校园提供一种方便快捷的跑腿服务&#xff0c;满足学生和教职员工的日常需求。首先&#xff0c;系统采用了Springboot作为后端框架&#xff0c;利用其轻量级、高效的特性&#xff0c…

学习笔记 韩顺平 零基础30天学会Java(2024.7.22)

P407 接口使用细节2 P407 接口课堂练习 对于最后一个的输出&#xff1a;B因为实现了A的接口&#xff0c;所以和继承一样&#xff0c;B可以访问A的变量 P409 接口VS继承 接口对单继承机制&#xff08;是指只能继承一个类&#xff09;进行了补充 也可以理解为&#xff0c;子类通过…

请你谈谈:针对Mybatis引出的Spring事务的探究2:spring事务的失效

Spring事务失效的常见场景主要包括以下几个方面&#xff0c;这些场景通常是由于对Spring事务管理机制的误解或不当使用所导致的&#xff1a; 方法访问级别不当&#xff1a; 如前所述&#xff0c;Spring AOP默认不会拦截非public方法。因此&#xff0c;如果Transactional注解被…

通信原理-实验六:实验测验

实验六 实验测验 一&#xff1a;测验内容和要求 测试需要完成以下几个步骤&#xff1a; 配置好以下网络图&#xff1b;占总分10%&#xff08;缺少一个扣一分&#xff09;根据下面图配置好对应的IP和网关以及路由等相关配置&#xff0c;保证设备之间连通正常&#xff1b;占总…

《AIGC 实战宝典》(2024版) 正式发布!

2024 新年伊始&#xff0c;OpenAI 推出文生视频 Sora&#xff0c;风靡整个科技圈。 最近又发布了 ChatGPT-4o&#xff0c;这是一个全新模型&#xff0c;不仅能处理文本&#xff0c;还能实时理解和生成音频和图像。OpenAI 用实际行动给全世界的科技公司又上了一课。 如何从0到1…

C++(week14): C++提高:(一)面向对象设计:设计原则、设计模式

文章目录 一、面向对象设计的概念4.统一建模语言&#xff1a;UML语言StartUML 二、类与类之间的关系0.总结1.继承 (泛化耦合)2.组合 (Composition)3.聚合 (Aggregation)4.关联(1)双向关联(2)单向关联 5.依赖 (Dependency) 三、面向对象设计的原则0.总结1.单一职责原则 (Single …

你还以为前端无法操作文件吗

&#x1f9d1;‍&#x1f4bb; 写在开头 点赞 收藏 学会&#x1f923;&#x1f923;&#x1f923; 这里面有个值得说明一点的问题是&#xff0c;我一直以为&#xff08;可能有人跟我一样&#xff09;前端是无法操作文件的&#xff0c;可实际上自从HTML5标准出现之后&#xff…

昇思25天学习打卡营第21天|CV-Shufflenet图像分类

打卡 目录 打卡 ShuffleNet 网络介绍 ShuffleNet 模型架构 Pointwise Group Convolution Channel Shuffle ShuffleNet模块 ShuffleNet 模块代码 构建ShuffleNet网络 模块代码 模型训练和评估 模型训练 模型评估 模型预测 ShuffleNet 网络介绍 ShuffleNetV1是旷视科…

数字图像处理笔记(三) ---- 傅里叶变换的基本原理

系列文章目录 数字图像处理笔记&#xff08;一&#xff09;---- 图像数字化与显示 数字图像处理笔记&#xff08;二&#xff09;---- 像素加图像统计特征 数字图像处理笔记&#xff08;三) ---- 傅里叶变换的基本原理 文章目录 系列文章目录前言一、傅里叶变换二、离散傅里叶变…

JCR一区级 | Matlab实现TTAO-Transformer-LSTM多变量回归预测

JCR一区级 | Matlab实现TTAO-Transformer-LSTM多变量回归预测 目录 JCR一区级 | Matlab实现TTAO-Transformer-LSTM多变量回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.【JCR一区级】Matlab实现TTAO-Transformer-LSTM多变量回归预测&#xff0c;三角拓扑聚合…

【运维自动化-配置平台】模型及模型关联最小化实践

蓝鲸智云配置平台&#xff0c;以下简称配置平台 我们知道主机是配置平台最常见的管控资源对象&#xff0c;在业务拓扑里可以通过划分模块来清晰的可视化管理&#xff1b;那其他资源如何通过配置平台来纳管呢&#xff0c;比如网络设备交换机。场景需求&#xff1a;如何把交换机…

【Linux 驱动】IMX6ULL eLCDIF参考手册翻译

1. eLCDIF 1.1 概述 eLCDIF是一种通用的显示控制器&#xff0c;用于驱动各种尺寸和性能不同的显示设备。 eLCDIF块支持以下功能&#xff1a; 支持MPU接口&#xff08;8080模式和6800模式&#xff09;支持DOTCLK接口&#xff08;RGB接口&#xff09;VSYNC模式&#xff1a;针对高…

Maven高级——详解

目录 一、分模块设计 二、分模块设计小实践 三、Maven继承 1.继承关系实现 ​编辑 2.版本锁定 dependencyManagement 自定义属性/引用属性 四、Maven聚合 五、Maven私服 一、分模块设计 为什么要分模块设计&#xff0c;将项目按照功能拆分分成若干个子模…

QT串口和数据库通信

创建串口 串口连接客户端并向服务器发送消息 client.pro #------------------------------------------------- # # Project created by QtCreator 2024-07-02T14:11:20 # #-------------------------------------------------QT core gui network QT core gui…

房屋出租系统 学习笔记 韩顺平 零基础30天学会Java(2024.7.15)

代码见package houserent P362 房屋出租需求 P363 房屋出租设计 分层模式 P364 房屋出租工具 给了一个工具包&#xff1a;Utility&#xff0c;使用&#xff1a;String s2 Utility.readString(10,”hspedu”);来限制输入字符大小最大是10&#xff0c;同时初始化的值为hspedu&a…

完全移动huggingface模型仓库(不是简单mv)

Linux中移动huggingface模型仓库 参考链接 先在bashrc中配置&#xff1a; export HF_DATASETS_CACHE"/your/path/dataset" export HF_HOME"/your/path/" export HUGGINGFACE_HUB_CACHE"/your/path/hub" export TRANSFORMERS_CACHE"/your…

速腾聚创激光雷达复现FAST-LIO

目录 1.软件环境 2.测试执行 3.代码学习 3.1.找主节点代码文件 3.2.整体流程结构 3.3.具体函数理解 记录复现FAST-LIO算法的过程和&#xff0c;代码梳理和理解 1.软件环境 Windows 10(64bits) VMware 16 Pro Ubuntu 20.04 ROS Noetic FAST-LIO的简化版、注释版。感谢…

Hospital 14.6.0全开源医院管理预约系统源码

InfyHMS 具有 60 种功能和 9 种不同类型的用户类型&#xff0c; 他们可以登录系统并根据他们的角色访问他们的数据。 源码下载&#xff1a;https://download.csdn.net/download/m0_66047725/89580674 更多资源下载&#xff1a;关注我。