该程序使用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
    猜你喜欢