413. Arithmetic Slices
来源:互联网 发布:空性智慧知乎 编辑:程序博客网 时间:2024/06/15 21:09
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.
运用动态规划的方法,首先定义一个vector,表示以每个vector下标对应的A中位置的数结尾的arithmetic slices数量,初始化全为0;
首先A中前三个可以确定是否是arithmetic slice,可以得到dp[2]也就是以A[2]为结尾的arithmetic slice数量。然后从A[3]开始根据A[i]-A[i-1] == A[i-1]-A[i-2]确定是否有一个新的arithmetic slice,从而确定dp[i]是否在前面的基础上加1。
将所有的dp值相加即得到arithmetic slices的数量。
代码如下:
class Solution {public: int numberOfArithmeticSlices(vector<int>& A) { int n = A.size(); if (n < 3) return 0; vector<int> dp(n, 0); if (A[2]-A[1] == A[1]-A[0]) dp[2] = 1; int result = dp[2]; for (int i = 3; i < n; ++i) { if (A[i]-A[i-1] == A[i-1]-A[i-2]) dp[i] = dp[i-1] + 1; result += dp[i]; } return result; }};
- 413. Arithmetic Slices
- [LeetCode]413.Arithmetic Slices
- Leetcode 413. Arithmetic Slices
- Leetcode-413. Arithmetic Slices
- 413. Arithmetic Slices
- 413. Arithmetic Slices
- 【LeetCode】413. Arithmetic Slices
- 413. Arithmetic Slices
- Leetcode-413. Arithmetic Slices
- 413. Arithmetic Slices
- 413. Arithmetic Slices
- 413. Arithmetic Slices
- 413. Arithmetic Slices
- LeetCode 413. Arithmetic Slices
- 413. Arithmetic Slices 【M】
- 413. Arithmetic Slices
- Leetcode 413. Arithmetic Slices
- 413. Arithmetic Slices
- [inno setup]学习入门之二 关于写入注册表的一点注意
- PyQt + sklearn 图像聚类 +图形界面 小软件
- 3.前端常见js问答题
- sed使用技巧之--给文件的行编号
- 小米手机如何通过蓝牙共享网络到笔记本电脑
- 413. Arithmetic Slices
- hashmap实现原理浅析
- eclipse编写web.xml中出现The word '...' is not correctly spelled
- [OnlineChat] 基于JSP+Servlet+Bean的在线聊天室
- 单例的五种实现方式,及其性能分析
- 一张图说懂java中 private default protected public 的区别
- hdu 2955 Robberies 01背包
- OSG概述
- [KD 树]HDU 5992 Finding Hotels