算法第七周 Arithmetic Slices
来源:互联网 发布:杭州运维前哨网络骗局 编辑:程序博客网 时间:2024/04/28 21:33
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, -9The following sequence is not arithmetic.1, 1, 2, 5, 7A 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.
解题思路:
这道题让我们算一种算数切片,说白了就是找等差数列,限定了等差数列的长度至少为3,那么[1,2,3,4]含有3个长度至少为3的算数切片,我们再来看[1,2,3,4,5]有多少个呢:
len = 3: [1,2,3], [2,3,4], [3,4,5]
len = 4: [1,2,3,4], [2,3,4,5]
len = 5: [1,2,3,4,5]
那么我们可以找出递推式,长度为n的等差数列中含有长度至少为3的算数切片的个数为(n-1)(n-2)/2,那么题目就变成了找原数组中等差数列的长度,然后带入公式去算个数即可,参见代码如下:
class Solution {public: int numberOfArithmeticSlices(vector<int>& A) { int res=0,len=2,n=A.size(); for(int i=2;i<n;++i){ if(A[i]-A[i-1] == A[i-1] - A[i-2]){ ++len; }else{ if(len>2) res += (len-1)*(len-2)*0.5; len=2; } } if(len>2) res += (len-1)*(len-2)*0.5; return res; }};
0 0
- 算法第七周 Arithmetic Slices
- 算法课第九周作业 | Arithmetic Slices
- Arithmetic Slices
- Arithmetic Slices
- Arithmetic Slices
- Arithmetic Slices
- Arithmetic Slices
- Arithmetic Slices
- Arithmetic Slices
- Arithmetic Slices
- Arithmetic Slices动态规划算法详解
- 【算法作业14】LeetCode 413. Arithmetic Slices
- (算法分析Week14)Arithmetic Slices[Medium]
- Leetcode 413. Arithmetic Slices(算法分析week15)
- 413. Arithmetic Slices(第九周)
- 413. Arithmetic Slices
- [LeetCode]413.Arithmetic Slices
- LeetCode: Arithmetic Slices
- HDU 1087 Super Jumping! Jumping! Jumping!(动态规划)
- bean元素的属性
- 137. Single Number II\393. UTF-8 Validation\547. Friend Circles
- ZOJ3700 Ever Dream
- Linux Shell脚本编程入门篇之一
- 算法第七周 Arithmetic Slices
- main 函数的两个参数argc、argv
- 87. Scramble String
- 向AS中导入module,出现butterknife初始化控件空指针的问题解决办法
- 活动选择问题
- PredNet阅读笔记——从视频预测的角度学习视频表征
- 【C语言】判断闰年
- 删除最后一次改动超过n天的文件
- 新建STM32库函数工程