Question:codility Lesson15 CountDistinctSlices
My Answer:
def solution(M,A):
front = 0
back = 0
lenA = len(A)
res = 0
exist = [-1] * (M + 1)
for front in range(lenA):
if exist[A[front]] == -1:
exist[A[front]] = front
else:
posback = exist[A[front]] + 1
res += (posback - back) * (front - back + front - posback + 1)/2
if res >= 1000000000:
return 1000000000
for i in range(back,posback):
exist[A[i]] = -1
exist[A[front]] = front
back = posback
res += (front - back + 1) * (front - back + 2) / 2
return min(res,1000000000)
Codility Lesson 15 解题思路

本文介绍了一个解决 Codility Lesson 15 CountDistinctSlices 问题的方法。通过使用滑动窗口技术和前缀和优化算法,有效地计算了数组中包含不同整数的切片数量,确保了算法的时间复杂度在 O(N) 范围内。
375

被折叠的 条评论
为什么被折叠?



