当前位置: 首页 > news >正文

【算法】【动规】等差数列划分


跳转汇总链接

👉🔗算法题汇总链接


1.2 等差数列划分

🔗题目链接

如果一个数列 至少有三个元素 ,并且任意两个相邻元素之差相同,则称该数列为等差数列。例如,[1,3,5,7,9]、[7,7,7,7] 和 [3,-1,-5,-9] 都是等差数列。
给你一个整数数组 nums ,返回数组 nums 中所有为等差数组的子数组个数。 子数组是数组中的一个连续序列。

  1. 状态表示
    • dp[i] 表示以 i 位置为结尾的等差数列的子数组个数。
  2. 状态转移方程
    • 等差数列只需要判断三个数字就能确定,我们设 i-2、i-1 和 i 位置为 a、b、c,当 c 的加入能形成等差数列时,dp[i] 位置的数(等差子数组个数)需要加上 abc 这个子数组,也就是在 dp[i-1] 的基础上加一即可。得到状态转移方程如下,
    dp[i] = if(c-b == b-a), dp[i-1]+1 if(c-b != b-a), 0
    
  3. 初始化
    • 把头两位置零,vector 的初始化就是 0,所以可以不用管。
  4. 填表顺序
    • 从左往右。
  5. 返回值
    • dp 表内所有值的和。

🐎代码如下:

class Solution {
public:int numberOfArithmeticSlices(vector<int>& nums) {size_t n = nums.size();vector<int> dp(n);size_t sum = 0;for(size_t i = 2; i < n; i++){dp[i] = nums[i]-nums[i-1] == nums[i-1]-nums[i-2] ? dp[i-1] + 1 : 0;sum += dp[i];}return sum;}
};

🥰如果本文对你有些帮助,欢迎👉 点赞 收藏 关注,你的支持是对作者大大莫大的鼓励!!(✿◡‿◡) 若有差错恳请留言指正~~


http://www.lryc.cn/news/259624.html

相关文章:

  • 系统架构设计师教程(五)软件工程基础知识
  • 计算机中的文件管理
  • Linux常见排错思路及命令
  • 【springboot】【easyexcel】excel文件读取
  • 【STM32】ADC模数转换器
  • Git篇---第九篇
  • Paper Reading: (ACRST) 基于自适应类再平衡自训练的半监督目标检测
  • 2023年贺岁电影:一眼多,二眼好多
  • 软件测试面试中基础与功能的问题
  • map|二分查找|离线查询|LeetCode:2736最大和查询
  • 你知道Java中的BigInteger类和BigDecimal类吗?
  • 33.搜索旋转排序数组
  • 【unity】【WebRTC】从0开始创建一个Unity远程媒体流app-设置输入设备
  • Redis持久化AOF详解
  • 基于ssm网络安全宣传网站设计论文
  • 机器人行业数据闭环实践:从对象存储到 JuiceFS
  • 墒情监测FDS-400 土壤温湿电导率盐分传感器
  • QT -CloudViewer工具
  • GoLong的学习之路,进阶,微服务之使用,RPC包(包括源码分析)
  • uniapp x 相比于其他的开发系统框架怎么样?
  • 2024最新独立站建站教程!WordPress 搭建独立站的方法和步骤
  • 深入React Flow Renderer(二):构建拖动操作栏
  • Java项目学生管理系统六后端补充
  • PDF控件Spire.PDF for .NET【转换】演示:将 PDF 转换为线性化
  • 猫头虎博主深度探索:Amazon Q——2023 re:Invent大会的AI革新之星
  • Spring框架-GOF代理模式之JDK动态代理
  • 基于JAVAEE技术校园车辆管理系统论文
  • 基于FFmpeg,实现播放器功能
  • 利用tf-idf对特征进行提取
  • 遇到运维故障,有没有排查和解决故障的正确流程?