当前位置:网站首页>LeetCode 413.等差数列划分
LeetCode 413.等差数列划分
2022-08-09 15:45:00 【老乐大魔王】
代码:
int numberOfArithmeticSlices(vector<int>& nums) {
int n=nums.size();
if(n<=2)return 0;
vector<int> dp(n);
for(int i=2;i<n;++i){
if(nums[i]-nums[i-1]==nums[i-1]-nums[i-2]){
dp[i]=dp[i-1]+1;
}
}
return accumulate(dp.begin(),dp.end(),0);
}
解题思路:
定义状态:dp[i]表示从nums[0]到nums[i](并且以nums[i]为结尾,这句话是关键)的区间内所含有的子等差数列个数
状态转移方程:if(dp[i]-dp[i-1]==dp[i-1]-dp[i-2])dp[i]=dp[i-1]+1
这段代码表示如果nums[i]满足区间(nums[0],nums[i-1])的差值,也就表示出现了一个新的等差区间{nums[i-2],nums[i-1],nums[i]},那么dp[i]的值等于在dp[i-1]的基础上+1,若nums[i]不满足区间(nums[0],nums[i-1])的差值,那么以nums[i]为结尾的等差序列是不存在的,因此此时dp[i]的值=0
边栏推荐
猜你喜欢
随机推荐
ESP8266-Arduino编程实例-MQ-6异丁烷丙烷传感器驱动
OpenCV image transformation - histogram equalization
2.1、基于并行上下文注意网络的场景文本图像超分辨率
nacos控制台权限管理
@AllArgsConstructor 和 @NoArgsConstructor
[1413. Stepwise summation to get the minimum value of positive numbers]
A42 - 基于51单片机的洗衣机设计
图像几何校正
我的第一篇博客
B019 - 甲醛甲烷煤气温湿度时间测试仪
一个程序员的水平能差到什么程度?
uni-app中websocket的使用 断开重连、心跳机制
ESP8266-Arduino编程实例-MQ-5液化天然气传感器驱动
AVL树的插入操作
网络——IPv6 vs IPv4
六.数组越界问题引出对栈区内存的探索
2022-08-09日报:做学术OR去公司 ? 想通这点,治好 AI 打工人的精神内耗
第一篇博客
四.数组传参
Reasons for slow startup of IDEA (1)








