1 parent 261b33e commit 7923799Copy full SHA for 7923799
1 file changed
leetcode3/최원준/413. Arithmetic Slices.py
@@ -0,0 +1,40 @@
1
+#
2
+
3
+'''
4
+1. 아이디어 :
5
+diff가 다를때마다 자른다.
6
+자른 길이를 재귀함수를 통해 경우의 수를 구한다
7
8
+2. 시간복잡도 :
9
+ O(n + n)
10
11
+3. 자료구조/알고리즘 :
12
+dfs
13
14
15
+class Solution:
16
+ def numberOfArithmeticSlices(self, nums: list[int]) -> int:
17
+ if len(nums) <3:
18
+ return 0
19
20
+ @cache
21
+ def calc(n):
22
+ return n // 3 if n <= 3 else n-2 + calc(n-1)
23
24
+ ans = 0
25
+ prevs = [nums[0], nums[1]]
26
+ diff = nums[1] - nums[0]
27
28
+ for num in nums[2:]:
29
+ if num - prevs[-1] == diff:
30
+ prevs.append(num)
31
32
+ elif num - prevs[-1] != diff:
33
+ if len(prevs) >= 3:
34
+ ans += calc(len(prevs))
35
36
+ diff = num - prevs[-1]
37
+ prevs = [prevs[-1], num]
38
39
+ return ans
40
0 commit comments