题目描绘:题目链接

题目中需要求解一个数组中等差数组的个数,这个问题可以利用动态规划的思路来分析。

三步骤:

1:问题归纳。题目需要求解等差数列的和,我们可以用一个数组保存前i个元素可以构成的等差数列的个数。dp[ i ],最后需要的时候再求和。

2:递归关系式的书写:等差数列无非要满足这个关系:a[ i ] - a[i-1] = a[i-1] - a[i-2];如果再添加一个元素a[i+1]满足:a[i+1] - a[i] = a[i] - a[i -1],则只需要在前者的基础上加1就可以。

  递推关系:dp[i] = dp[i-1]+1

3:初始化:满足dp[0] = 0;dp[1] = 0.

代码如下:

class Solution {
public int numberOfArithmeticSlices(int[] A) {
if(A == null || A.length == 0){
return 0;
}
int len = A.length;
int[] a = new int[len];
for(int i = 2; i < len; i++){
if(A[i] - A[i-1] == A[i-1]-A[i-2]){
a[i] = a[i-1] + 1;
}
}
      //最后求和
int sum = 0;
for(int t: a){
sum += t;
}
return sum;
}
}

Leetcode——413. 等差数列划分的更多相关文章

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

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

  2. Leetcode 413.等差数列划分

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

  3. Leetcode之动态规划(DP)专题-413. 等差数列划分(Arithmetic Slices)

    Leetcode之动态规划(DP)专题-413. 等差数列划分(Arithmetic Slices) 如果一个数列至少有三个元素,并且任意两个相邻元素之差相同,则称该数列为等差数列. 例如,以下数列为 ...

  4. Leetcode 446.等差数列划分II 子序列

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

  5. Java实现 LeetCode 446 等差数列划分 II - 子序列

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

  6. LeetCode 413 Arithmetic Slices详解

    这个开始自己做的动态规划复杂度达到了O(n), 是用的是2维的矩阵来存前面的数据,复杂度太高了, 虽然好理解,但是没效率,后面看这个博客发现没有动态规划做了这个题 也是比较厉害. 转载地址: http ...

  7. Leetcode 413. Arithmetic Slice 算术序列切片(动态规划,暴力)

    Leetcode 413. Arithmetic Slice 算术序列切片(动态规划,暴力) 题目描述 如果一个数组1.至少三个元素2.两两之间差值相同,那么这个数组就是算术序列 比如下面的数组都是算 ...

  8. 【LeetCode】413. Arithmetic Slices 等差数列划分

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 暴力 双指针 递归 动态规划 日期 题目地址:htt ...

  9. 413 Arithmetic Slices 等差数列划分

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

随机推荐

  1. HDU2819(KB10-E 二分图最大匹配)

    Swap Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  2. 关于latex编译中文不显示问题的解决方法。

    我的编译环境是texlive2018 + texstudio 配置如图 默认编码格式为utf8 直接上代码 %\documentclass{article} %\usepackage{xeCJK} \ ...

  3. JS写的二级导航栏(利用冒泡原理)

    今天给大家分享一种用JS写的导航栏,虽然我们工作中不会使用JS来做导航栏,为了练习我们用JS来做一个JS导航栏 这种方法要比其他方法代码量少很多,但是需要对事件冒泡有一定的理解,如果需要理解冒泡可以参 ...

  4. Android友盟增量更新

    1.增量升级的原理 增量更新的原理就是将本地apk与服务器端最新版本比对,并得到差异包.比如现在的版本是1.1.4,大小是7.2M,新版本是1.1.5.大小是7.3M.我们发现两个版本只有0.1M的差 ...

  5. NetBeans 打开项目中文乱码最简单的解决办法

    网上各种修改配置文件,中文乱码还是没有解决,其实不是NetBeans的问题,是编辑器设置的字符集不支持中文,最简单的办法:!!! 设置新字体即可 !!!

  6. linq not in

    linq not in 查询 or join not in var query = from c in _opvRepository.Table join a in _orderRepository. ...

  7. Visual Basic 6.0(VB6.0)详细安装过程

    注:大家如果没有VB6.0的安装文件,可自行百度一下下载,一般文件大小在200M左右的均为完整版的软件,可以使用. 特别提示:安装此软件的时候最好退出360杀毒软件(包括360安全卫士,电脑管家等,如 ...

  8. jbosscache

    JBossCache 讲解说明 是什么? 一个树形结构.支持集群.支持事务的缓存技术. 有什么作用? JBoss Cache是针对Java应用的企业级集群解决方案,其目的是通过缓存需要频繁访问的Jav ...

  9. MySQL分析函数实现

    | MySQL分析函数实现还好MySQL8.0已经实现了与Oracle相同的分析函数. 1. 实现rownumSET @rn:=0;SELECT @rn:=@rn+1 AS rownum ,e.* F ...

  10. 利用percona-toolkit定位数据库性能问题

    当你的性能瓶颈卡在数据库这块的时候,可以通过percona-toolkit来进行问题定位. 那么,首先,介绍下percona-toolkit.percona-toolkit是一组高级命令行工具的集合, ...