Matt Zheng

arithmetic-slices

題目概述

題目

找出所有等差數列的子矩陣數量,子矩陣長度至少為3

Solution

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Solution:
def numberOfArithmeticSlices(self, nums: List[int]) -> int:
ans = 0

# 建置新的矩陣,紀錄前後差值
data = []
for i in range(len(nums)-1):
data.append(nums[i+1]-nums[i])
data.append(-3000)
left = data[0]
cnt = 0

# 如果差值相同就進行機制演算
# 可排列可能是從1開始等加上去的
for i in data:
if i != left:
cnt = 0
left = i
if i == left:
cnt += 1
if cnt > 1: ans += cnt-1
return ans