力扣--动态规划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;
    }
};
相关推荐
chao1898443 小时前
基于 SPEA2 的多目标优化算法 MATLAB 实现
开发语言·算法·matlab
沪漂阿龙3 小时前
AI大模型面试题:支持向量机是什么?间隔最大化、软间隔、核函数、LinearSVC 全面拆解
人工智能·算法·支持向量机
難釋懷3 小时前
Redis数据结构-Set结构
数据结构·redis·bootstrap
little~钰4 小时前
倍增算法和ST表
算法
知识领航员5 小时前
蘑兔AI音乐深度实测:功能拆解、实测表现与适用场景
java·c语言·c++·人工智能·python·算法·github
薛定e的猫咪5 小时前
因果推理研究方向综述笔记
人工智能·笔记·深度学习·算法
如何原谅奋力过但无声6 小时前
【灵神高频面试题合集06-08】反转链表、快慢指针(环形链表/重排链表)、前后指针(删除链表/链表去重)
数据结构·python·算法·leetcode·链表
平行侠6 小时前
037插入排序 - 整理扑克牌的算法
数据结构·算法
ECT-OS-JiuHuaShan6 小时前
彻底定理化:从量子纠缠到量子代谢
数据库·人工智能·学习·算法·生活·量子计算