当前位置: 首页> 房产> 家装 > 天价域名排名100_免费自动交易软件app_软文范例800字_网络服务投诉平台

天价域名排名100_免费自动交易软件app_软文范例800字_网络服务投诉平台

时间:2025/7/13 12:35:46来源:https://blog.csdn.net/wschichi/article/details/145537799 浏览次数:0次
天价域名排名100_免费自动交易软件app_软文范例800字_网络服务投诉平台

leetcode 413.等差数列划分

问题:如果一个数列 至少有三个元素 ,并且任意两个相邻元素之差相同,则称该数列为等差数列。给你一个整数数组 nums ,返回数组 nums 中所有为等差数组的 子数组 个数。

子数组 是数组中的一个连续序列。

示例1:

输入:nums = [1,2,3,4]
输出:3
解释:nums 中有三个子等差数组:[1, 2, 3]、[2, 3, 4] 和 [1,2,3,4] 自身。

示例2:

输入:nums = [1]
输出:0

思路:
  1. 边界:

    int n = nums.size();
    if (n < 3)return 0;
    
    • 首先获取数组的长度 n
    • 如果数组长度小于 3,直接返回 0。
  2. 初始化变量:

    int count = 0, dp = 0;
    
    • count:记录总的等差数列子数组的个数。
    • dp:记录当前连续的等差数列子数组的个数。
  3. 遍历数组:

    for (int i = 2; i < n; i++) {if (nums[i] - nums[i - 1] == nums[i - 1] - nums[i - 2]) {dp += 1;count += dp;} else {dp = 0;}
    }
    
    • 从第三个元素开始遍历。

    • 检查当前元素 nums[i]、前一个元素 nums[i-1] 和前前一个元素 nums[i-2] 是否构成等差数列:

      • 如果满足,则dp += 1,当前连续的等差数列子数组长度增加1,

      count += dp,再将当前的等差数列子数组个数累加到 count 中。

      • 如果不满足,则重置当前连续的等差数列子数组个数为0。
  4. 返回结果:

return count;

代码:

class Solution {
public:int numberOfArithmeticSlices(vector<int>& nums) {int n = nums.size();if (n < 3)return 0;int count = 0, dp = 0;for (int i = 2; i < n; i++) {if (nums[i] - nums[i - 1] == nums[i - 1] - nums[i - 2]) {dp += 1;count += dp;} else {dp = 0;}}return count;}
};
关键字:天价域名排名100_免费自动交易软件app_软文范例800字_网络服务投诉平台

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: