博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode Arithmetic Slices
阅读量:5360 次
发布时间:2019-06-15

本文共 1316 字,大约阅读时间需要 4 分钟。

原题链接在这里:

题目:

A sequence of number is called arithmetic if it consists of at least three elements and if the difference between any two consecutive elements is the same.

For example, these are arithmetic sequence:

1, 3, 5, 7, 97, 7, 7, 73, -1, -5, -9

The following sequence is not arithmetic.

1, 1, 2, 5, 7

A zero-indexed array A consisting of N numbers is given. A slice of that array is any pair of integers (P, Q) such that 0 <= P < Q < N.

A slice (P, Q) of array A is called arithmetic if the sequence:

A[P], A[p + 1], ..., A[Q - 1], A[Q] is arithmetic. In particular, this means that P + 1 < Q.

The function should return the number of arithmetic slices in the array A.

Example:

A = [1, 2, 3, 4]return: 3, for 3 arithmetic slices in A: [1, 2, 3], [2, 3, 4] and [1, 2, 3, 4] itself.

题解:

DP问题. 求有多少种arithmetic slices. 储存历史信息dp[i]表示A在[k, i]区间内本身是arithmetic slice, 以A[i]结尾有多少种arithmetic slices.

递推时dp[i] = dp[i-1]+1.

初始化都是0.

答案dp内元素的和.

简化空间用cur取代一维数组. 当不再是arithmetic时cur清0.

Time Complexity: O(A.length). 

Space: O(1).

AC Java:

1 class Solution { 2     public int numberOfArithmeticSlices(int[] A) { 3         if(A == null || A.length < 3){ 4             return 0; 5         } 6          7         int cur = 0; 8         int sum = 0; 9         for(int i = 2; i

 

转载于:https://www.cnblogs.com/Dylan-Java-NYC/p/7616815.html

你可能感兴趣的文章
Unity The Tag Attribute Matching Rule
查看>>
试着理解下kvm
查看>>
WebService学习总结(二)--使用JDK开发WebService
查看>>
Tizen参考手机RD-210和RD-PQ
查看>>
竞价广告系统-位置拍卖理论
查看>>
策略模式 C#
查看>>
[模板]树状数组
查看>>
[HDU 6447][2018CCPC网络选拔赛 1010][YJJ's Salesman][离散化+线段树+DP]
查看>>
设计模式学习的好方法
查看>>
感谢Leslie Ma
查看>>
几种排序方法
查看>>
查看数据库各表的信息
查看>>
第一阶段测试题
查看>>
第二轮冲刺第五天
查看>>
图片压缩
查看>>
Hadoop-2.6.5安装
查看>>
教你如何一步步将项目部署到Github
查看>>
关于Android圆形图片的一种优化方案(可以显示网络图片)
查看>>
Windows路由表详解
查看>>
.NET性能优化方面的总结
查看>>