๐๐ 413. ็ญๅทฎๆฐๅๅๅ
2022ๅนด10ๆ10ๆฅ
- algorithm
๐๐ 413. ็ญๅทฎๆฐๅๅๅ
้พๅบฆ: ๐๐
้ฎ้ขๆ่ฟฐ
่งฃๆณ
class Solution {
public int numberOfArithmeticSlices(int[] nums) {
// ๆ่ทฏ๏ผ
// dp[i] - ไปฅ i ไธบ็ปๅฐพไธๆ ็็ญๅทฎๆฐๅ็็ง็ฑปๆฐ
// ๆณจๆ้ขๆ็ๅญๆฐ็ปๆฏๆ๏ผๆฐ็ปไธญ็่ฟ็ปญๅบๅ
int len = nums.length;
if(len < 3) {
return 0;
}
// len >= 3
int res = 0;
int[] dp = new int[len];
for(int i = 2; i < len; i ++) {
// ๅคๆญ [i] ่ฝๅฆไธ [i - 1] & [i - 2] ๅฝขๆ็ญๅทฎๆฐๅ
if(nums[i] - nums[i - 1] == nums[i - 1] - nums[i - 2]) {
// ๆปก่ถณ่ฟ็ปญ็ๅญๅบๅ
// {[i - 2], [i - 1], [i]} ๅฏไปฅๅ็ฌ็ปๆไธไธช็ญๅทฎๅบๅ
dp[i] = 1;
// [i] ๅฏไปฅไธ dp[i - 1] ๆๆ่ฟ็ปญ็็ญๅทฎๅบๅ
dp[i] += dp[i - 1];
res += dp[i];
}
}
return res;
}
}