DP——Arithmetic Slices
来源:互联网 发布:淘宝男装潜力卖家入口 编辑:程序博客网 时间:2024/06/10 01:05
题目描述:
给定一个数列,找到所包含的等差数列的数量
解题思路:
还是以往的思路,声明一个dp数组,dp[i]用来存储到第i+1个元素已包含的等差数列数量。现在考虑dp[i]和dp[i+1]之间的关系,如果新加进来的数可以和前面的数构成等差数列的话,那么dp[i]的数量应该在dp[i-1]的基础上增加,增加的量是多少呢?我们可以举一个简单的例子:12345->123456 如果dp[4]=6,dp[5]应该等于10,那么多出来的4个,分别是123456,23456,3456,456,而在dp[i-1]中有12345,2345,345,仔细观察不难发现,其实本质上加的是456,所以我们可以dp[i]=dp[i-1]+1,然后再累加所有的dp
源代码:
class Solution {
public:
int numberOfArithmeticSlices(vector<int>& A) {
int n=A.size();
if(n<3) return 0;
int result=0;
vector<int> dp(n,0);
if(A[2]-A[1]==A[1]-A[0]) dp[2]=1;
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;
}
for(int i=0;i<n;i++)
result+=dp[i];
return result;
}
};
public:
int numberOfArithmeticSlices(vector<int>& A) {
int n=A.size();
if(n<3) return 0;
int result=0;
vector<int> dp(n,0);
if(A[2]-A[1]==A[1]-A[0]) dp[2]=1;
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;
}
for(int i=0;i<n;i++)
result+=dp[i];
return result;
}
};
0 0
- DP——Arithmetic Slices
- [DP]413. Arithmetic Slices
- DP-----413. Arithmetic Slices
- Arithmetic Slices——Difficulty:Memium
- Leetcode 413 - Arithmetic Slices(dp)
- LeetCode 413. Arithmetic Slices dp方法
- LeetCode学习篇八—— Arithmetic Slices
- 动态规划——413. Arithmetic Slices[Medium]
- 动态规划——446. Arithmetic Slices II
- Arithmetic Slices
- Arithmetic Slices
- Arithmetic Slices
- Arithmetic Slices
- Arithmetic Slices
- Arithmetic Slices
- Arithmetic Slices
- Arithmetic Slices
- DP(5) -- Word Break, Partition Equal Subset Sum,Arithmetic Slices
- ElasticNet回归及机器学习正则化
- 04---文件(目录)操作 & 链接文件
- 如何运行一个vue工程
- 知识的表示与知识库
- 工作流引擎Activiti学习第一天(一)环境搭建
- DP——Arithmetic Slices
- 学习淘淘商城第五十九课(ActiveMQ持久化Topic消息)
- C++ Primer 第5版--练习10.34
- iOS小技巧纪录(持续更新)
- 素数判断
- 566. Reshape the Matrix
- Java内存区域与内存溢出异常
- python:异常
- AVL树的构建