笔试题9. LeetCode OJ (9) Arithmetic Slices
2017-01-14 18:50
176 查看
题目的意思是:给你一串数字(至少3个),其中的一串数字(子串——3个或者3个以上数字组成)相邻两个数字之间的差两两相等,那么这串数字就是“Arithmetic Slices”——“算数片”,请计算一串数字中的“算数片”。
class Solution { public: int numberOfArithmeticSlices(vector<int>& A) { int len=A.size(); if(len<3){ return 0; } int cnt=0; vector<int> dp(len,0); for(int i=1;i<len-1;i++){ if(A[i+1]-A[i]==A[i]-A[i-1]) dp[i]=dp[i-1]+1; cnt+=dp[i]; } return cnt; } };
最为关键的就是“ dp[i]=dp[i-1]+1;”这个语句,就是每当串长度加1的时候,整个“算数片”数量会加dp[i-1]+1个,这是整道题目的关键。
相关文章推荐
- 【Codeforces 757 Bash's Big Day】+ 手速
- 在当前活动返回上一个活动详解
- STURTS2 HELLOWORLD
- 当客户说 “这里有点问题,我想要这样的...”,后面的事你造吗
- 前端跨域问题
- POJ 3264 Balanced Lineup 【线段树】
- 微信小程序开发视频教程
- Java运算符
- 异常机制基本思想梳理
- 李白打酒
- 微信小程序tabBar显示问题
- 寒假随笔(开启程序设计大佬模式)
- [00804]创建大量对象时节省内存方法
- JAVA UDP协议编程
- What day is that day?(打表找周期)
- C++项目(1):学生信息管理系统(简单教学版)
- Note08--文件
- HDMI、DVI和VGA之间的区别
- SSH学习(三)Struts2之Action下
- OpenCV Mat与QImage相互转换函数