413-Arithmetic-Slices
0x0 题目详情
0x1 解题思路
0x2 代码实现
class Solution {
public int numberOfArithmeticSlices(int[] A) {
if(A==null || A.length==0){
return 0;
}
if(A.length<3){
return 0;
}
int[][] dp=new int[A.length][2];
dp[1][0]=A[1]-A[0];
dp[1][1]=2;
int result=0;
for(int i=2;i<A.length;i++){
if(A[i]-A[i-1]==dp[i-1][0]){
dp[i][0]=dp[i-1][0];
dp[i][1]=dp[i-1][1]+1;
}else{
dp[i][0]=A[i]-A[i-1];
dp[i][1]=2;
}
if(dp[i][0]!=dp[i-1][0] && dp[i-1][1]>=3){
result+=((dp[i-1][1]-2)*(dp[i-1][1])-1)/2;
continue;
}
if(i==A.length-1 && dp[i][1]>=3){
result+=((dp[i][1]-2)*(dp[i][1]-1))/2;
}
}
return result;
}
}0x3 课后总结
Last updated