使用 Python 中的递归索引计算元素集合中元素数量的程序

pythonserver side programmingprogramming更新于 2026/1/12 18:20:17

假设我们有一个名为 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。

为了解决这个问题,我们将遵循以下步骤 −

  • seen := a new set
  • while k < A 的大小,执行
    • 如果 A[k] 在 seen 中,则
      • 返回 -1
    • 将 A[k] 插入 seen
    • k := A[k]
  • 返回 seen 的大小

让我们看看下面的实现以便更好地理解 −

示例

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

相关文章


有用资源