# Python math solution

• ``````class Solution(object):
def numberOfArithmeticSlices(self, A):
"""
:type A: List[int]
:rtype: int
"""
difference = None
sliceLength = 0
ret = 0
for i in range(1, len(A)):
if A[i] - A[i-1] == difference:
sliceLength += 1
else:
if sliceLength >= 3:
ret += ((sliceLength - 1) * (sliceLength - 2)) / 2
sliceLength = 2
difference = A[i] - A[i-1]
if sliceLength >= 3:
ret += ((sliceLength - 1) * (sliceLength - 2)) / 2
return ret
``````

• can you explain the reasoning for this? thanks!

``````((sliceLength - 1) * (sliceLength - 2)) / 2
``````

• We're finding the number of different slices composed of 3 or more, so if a numeric slice is 3 long there is 1 slice, if its 4 long, there are 2 three length slices and one 4 length slices to get 3 total slices, and for 5 you get 1 + 2 + 3 = 6. For an n length slice, we are getting the sum from 1 to n - 2, so I'm just putting n-2 into the summation equation, which is (n * (n + 1)) / 2, to get ((n - 2) * (n - 1)) / 2. In hindsight, I could have just added n- 2 to my return value every time, but this works as well.

• @julianwon94 That makes sense. Thanks!

• Thanks for your explanation!

Looks like your connection to LeetCode Discuss was lost, please wait while we try to reconnect.