力扣--动态规划413.等差数列划分

思路分析 :

  1. 开始时判断输入向量的大小是否小于等于2,若是,则返回0,因为少于3个元素不可能形成等差数列。
  2. 初始化一个大小为n的动态规划数组dp,用于存储以每个位置为结尾的等差数列的数量。
  3. 初始化一个变量result用于存储最终的结果,表示整个向量中的等差数列总数。
  4. 从第三个元素(索引2)开始遍历输入向量。
  5. 对于每个元素,检查它与前两个元素是否构成等差数列。
  6. 如果是等差数列,更新动态规划数组dp,并将当前位置的数量添加到result中。
  7. 最终返回result,即等差数列的总数量。
cpp 复制代码
#include <vector>

class Solution {
public:
    int numberOfArithmeticSlices(std::vector<int>& nums) {
        // 获取输入向量的大小
        int n = nums.size();
        
        // 如果大小小于等于2,则没有等差数列
        if (n <= 2)
            return 0;
        
        // 初始化一个动态规划(DP)数组,用于存储以每个位置为结尾的等差数列的数量
        std::vector<int> dp(n, 0);
        
        // 初始化一个变量,用于存储最终的结果
        int result = 0;
        
        // 从第三个元素(索引2)开始遍历输入向量
        for (int i = 2; i < n; i++) {
            // 检查当前三个连续的元素是否构成等差数列
            if (nums[i] - nums[i - 1] == nums[i - 1] - nums[i - 2]) {
                // 如果是,更新DP数组,并将数量添加到结果中
                dp[i] = dp[i - 1] + 1;
                result += dp[i];
            }
        }
        
        // 返回最终结果,表示整个向量中的等差数列总数
        return result;
    }
};
相关推荐
胖咕噜的稞达鸭7 分钟前
AVL树手撕,超详细图文详解
c语言·开发语言·数据结构·c++·算法·visual studio
CSCN新手听安8 分钟前
【linux】多线程(六)生产者消费者模型,queue模拟阻塞队列的生产消费模型
linux·运维·服务器·c++
-SGlow-17 分钟前
Linux相关概念和易错知识点(48)(epoll的底层原理、epoll的工作模式、反应堆模式)
linux·服务器·c语言·网络·c++
YSRM27 分钟前
Leetcode+Java+图论II
java·leetcode·图论
熊猫钓鱼>_>30 分钟前
Rust语言特性深度解析:所有权、生命周期与模式匹配之我见
算法·rust·软件开发·函数·模式匹配·异步编程·质量工具
csdn_aspnet35 分钟前
C++ 圆台体积和表面积计算程序(Program for Volume and Surface area of Frustum of Cone)
c++
芒果量化41 分钟前
Optuna - 自动调参利器&python实例
开发语言·python·算法·机器学习
麦麦大数据44 分钟前
D025 摩托车推荐价格预测可视化系统|推荐算法|机器学习|预测算法|用户画像与数据分析
mysql·算法·机器学习·django·vue·推荐算法·价格预测
阿林学习计算机1 小时前
红黑树的实现
数据结构
cellurw1 小时前
Day67 Linux I²C 总线与设备驱动架构、开发流程与调试
linux·c语言·架构