该程序使用Python中的递归索引对一组元素中存在的元素数量进行计数
假设我们有一个数字列表,称为A,另一个数字为k,我们必须制作一组新的可能元素{A[k],A[A[k]],A[A[A[k]]],...。..}在索引不足之前停止。我们必须找到该集合的大小,否则当存在一个循环时为-1。
因此,如果输入像A=[1,2,3,4,5,6,7],k=1,则输出将是6,因为A[1]=2,A[2]=3,A[3]=4,A[4]=5,A[5]=6,A[6]=7,所以集合为{2,3,4,5,6,7},集合的大小为6。
为了解决这个问题,我们将遵循以下步骤-
看过:=一套新的
当k<A的大小时
返回-1
如果看到A[k],则
将A[k]插入可见
k:=A[k]
看到的返回大小
让我们看下面的实现以更好地理解-
示例
class Solution: def solve(self, A, k): seen = set() while k < len(A): if A[k] in seen: return -1 seen.add(A[k]) k = A[k] return len(seen) ob = Solution()print(ob.solve([1,2,3,4,5,6,7], 1))
输入值
[1,2,3,4,5,6,7], 1
输出结果
6