413. Arithmetic Slices Medium
来源:互联网 发布:m1m2基础货币知乎 编辑:程序博客网 时间:2024/05/16 06:29
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.\
思路:使用动态规划。子问题是更短的列有多少个arithmetic slices。注意到通式,对于一个具有arithmetic属性的列,若有n个slices,再加上一个元素后,若新列仍为arithmetic,那么新列有slices n + 新列长 - 2个。用result[j]记录以下标为j + 2的元素为结尾的子列的arithmetic slice数,result[A.size() - 3]为我们的结果。
class Solution {public: int numberOfArithmeticSlices(vector<int>& A) { if (A.size() < 3) { return 0; } int result[A.size()], length = 2; for (int i = 0; i < A.size(); i++) { result[i] = 0; } for (int j = 0; j < A.size() - 2; j++) { if (A[j] - A[j + 1] == A[j + 1] - A[j + 2]) { length++; if (j == 0) { result[j] = 1; } else { result[j] = result[j - 1] + length - 2; } } else { length = 2; if (j == 0) { result[j] = 0; } else { result[j] = result[j - 1] + length - 2; } } } return result[A.size() - 3]; }};
- 413. Arithmetic Slices -Medium
- 413. Arithmetic Slices Medium
- Leetcode 413. Arithmetic Slices[medium]
- 【LeetCode】413. Arithmetic Slices(Medium)
- leetcode 413. Arithmetic Slices [medium]
- leetcode 413. Arithmetic Slices(medium)
- LeetCode 413. Arithmetic Slices [Medium]
- LeetCode解题报告 413. Arithmetic Slices [medium]
- [leetcode 413. Arithmetic Slices]medium|week 12
- [Medium]Arithmetic Slices
- LeetCode #413 - Arithmetic Slices - Medium
- 413. Arithmetic Slices 类别:动态规划 难度:Medium
- 【leetcode】【Medium】【413. Arithmetic Slices】【Math】【Dynamic programming】
- 动态规划——413. Arithmetic Slices[Medium]
- (算法分析Week14)Arithmetic Slices[Medium]
- 413. Arithmetic Slices
- [LeetCode]413.Arithmetic Slices
- Leetcode 413. Arithmetic Slices
- 最大网络流Dinic算法
- 手术机器人DVRK学习系列之(1)-安装和编译
- 把数组排成最小的数三种实现方式及时间性能分析
- Unity 有限状态机(Finite State Machine)的理解 与 实现简单的可插拔(Pluggable)AI脚本对象。
- 51NOD1307 绳子与重物 【并查集】
- 413. Arithmetic Slices Medium
- Spring+web无法连接mysql数据库
- C++ 01 —— 重载
- 最大网络流Dinic算法(优化版)
- Soapui接口功能测试
- java ArrayList学习
- MYSQL入门知识点总结
- window 命令行bat脚本软连接执行exe
- j2ee纠错篇(1)