413. 等差数列划分

如果一个数列至少有三个元素,并且任意两个相邻元素之差相同,则称该数列为等差数列。

例如,以下数列为等差数列:

1, 3, 5, 7, 9

7, 7, 7, 7

3, -1, -5, -9

以下数列不是等差数列。

1, 1, 2, 5, 7

数组 A 包含 N 个数,且索引从0开始。数组 A 的一个子数组划分为数组 (P, Q),P 与 Q 是整数且满足 0<=P

如果满足以下条件,则称子数组(P, Q)为等差数组:

元素 A[P], A[p + 1], …, A[Q - 1], A[Q] 是等差的。并且 P + 1 < Q 。

函数要返回数组 A 中所有为等差数组的子数组个数。

示例:

A = [1, 2, 3, 4]

返回: 3, A 中有三个子等差数组: [1, 2, 3], [2, 3, 4] 以及自身 [1, 2, 3, 4]。

这道题如果需要效率快,那么必然是需要一个O(n)的算法,暴力法不考虑,复用5号题目的dp思想,效率也不是这么让人满意,这道题主要是需要找到其规律,从小的例子出发,仔细观察,会发现当整个数组为(1, 2, 3, 4, 5, 6)的时候,我们先取出前三个,(1, 2, 3)的等差数列的个数为1,(1, 2, 3, 4)的等差数列的个数为3,(1, 2, 3, 4, 5)的等差数列的个数为6,(1, 2, 3, 4, 5, 6)的等差数列个数为10,以此类推我们可以很容易的发现在一个等差数列中加入一个数字,如果还保持着等差数列的特性,每次的增量都会加1,如果刚加进来的数字与原先的序列构不成等差数列,就将增量置为0,接下来继续循环,执行以上的逻辑即可

class Solution {

public int numberOfArithmeticSlices(int[] A) {

if (A == null || A.length <= 2)

return 0;

int res = 0;

int add = 0;

for (int i = 2; i < A.length; i++)

if (A[i - 1] - A[i] == A[i - 2] - A[i - 1])

res += ++add;

else

add = 0;

return res;

}

}

等差数列java_Java实现 LeetCode 413 等差数列划分相关推荐

  1. leetcode - 413. 等差数列划分

    413. 等差数列划分 -------------------------------------------- 如果一个数列至少有三个元素,并且任意两个相邻元素之差相同,则称该数列为等差数列. 例如 ...

  2. Java实现 LeetCode 413 等差数列划分

    413. 等差数列划分 如果一个数列至少有三个元素,并且任意两个相邻元素之差相同,则称该数列为等差数列. 例如,以下数列为等差数列: 1, 3, 5, 7, 9 7, 7, 7, 7 3, -1, - ...

  3. Leetcode 413.等差数列划分

    Time: 20190906 Type: Medium 题目描述 以下数列不是等差数列. 1, 1, 2, 5, 7 数组 A 包含 N 个数,且索引从0开始.数组 A 的一个子数组划分为数组 (P, ...

  4. Leetcode 413. 等差数列划分(python)

    如果一个数列至少有三个元素,并且任意两个相邻元素之差相同,则称该数列为等差数列. 例如,以下数列为等差数列: 1, 3, 5, 7, 9 7, 7, 7, 7 3, -1, -5, -9 以下数列不是 ...

  5. LeetCode 413 等差数列划分

    题目描述 如果一个数列至少有三个元素,并且任意两个相邻元素之差相同,则称该数列为等差数列. 例如,以下数列为等差数列: 1, 3, 5, 7, 9 7, 7, 7, 7 3, -1, -5, -9 以 ...

  6. [leetcode] 413. 等差数列划分

    一开始想得是这题应该是用动态规划来做,但是没写出来 下面的都是leetcode上的代码: https://leetcode-cn.com/problems/arithmetic-slices/solu ...

  7. leetcode 413. 等差数列划分

    如果一个数列至少有三个元素,并且任意两个相邻元素之差相同,则称该数列为等差数列. 例如,以下数列为等差数列: 1, 3, 5, 7, 9 7, 7, 7, 7 3, -1, -5, -9 以下数列不是 ...

  8. 2022-4-18 Leetcode 413. 等差数列划分

    class Solution {public:int numberOfArithmeticSlices(vector<int>& nums) {int n = nums.size( ...

  9. LeetCode 413. 等差数列划分(DP)

    1. 题目 一个数列的等差数列子数组有多少个. A = [1, 2, 3, 4]返回: 3, A 中有三个子等差数组: [1, 2, 3], [2, 3, 4] 以及自身 [1, 2, 3, 4]. ...

最新文章

  1. 喜报!清华社《晓肚知肠:肠菌的小心思》荣获“2018年度中国好书”奖
  2. 框架原理第一讲,熟悉常用的设计方式.(以MFC框架讲解)
  3. oh-my-zsh 功能收集
  4. ArcGIS 10.2数字化线状要素时自动拼接成一条线
  5. 一个资深老司机告诉你选车的秘密 (完全版)
  6. numpy matrix 矩阵对象
  7. Java字符串截取(substring)
  8. RNN,LSTM中如何使用TimeDistributed包装层,代码示例
  9. python 使用 plt.savefig() 保存图片去除旁边的空白区域
  10. 计算二叉树的叶子结点个数
  11. 纲要-Java网络爬虫系统性学习与实战(1)
  12. 【Python 基础篇】Python代码 之 三目表达式总结
  13. 如何查看某公司主体下挂了哪些公众号?
  14. love2d 编译 android,Love2D游戏脚本在windows平台下打包exe发布教程
  15. 360数科知微实验室发布反诈报告:揭秘黑灰产数据流转真相
  16. 安装计算机的显卡出现问题,电脑显卡驱动安装失败如何解决
  17. 音质好的蓝牙耳机有哪几款?公认音质好的蓝牙耳机
  18. 在html中ex是什么单位,前端用到的那些单位
  19. 微信小程序全局数据共享学习笔记
  20. 《计算机网络自顶向下》Wireshark实验 Lab11 802.11 WiFi

热门文章

  1. 创建抽象类、_【Java视频教程】day16-抽象类
  2. OpenShift 4 - 使用教程和免费试用环境
  3. 如何在ngRepeat中使用Bootstrap Span元素
  4. 11 月全球 Web 服务器调查报告:nginx 表现最佳
  5. 在.NET Core 3.0 Preview上使用Windows窗体设计器
  6. android怎么注释代码块,Android.mk 代码注释
  7. python新闻联播分类_如何利用人脸识别自动切分视频
  8. python 手机自动化脚本_iOS python自动化出包脚本
  9. mysql 排序速度_MySQL排序速度慢而且可能不稳定
  10. 将angular转化为手机app_手机照片快速转化为PBR材质流程