检查给定的数字 K 是否足以用 Python 达到数组的末尾


假设我们有一个数组 nums 和另一个值 k。我们必须检查是否可以通过执行这些操作来到达数组的末尾。操作:遍历 nums,如果存在任何非素数,则将 k 的值减 1。现在,如果任何值是素数,则将 k 的值重新填充到其初始值。

因此,如果输入类似于 nums = [8, 5, 6, 7, 8],k = 2,则输出将为 True,因为 nums[0] 不是素数,然后使 k = 1,然后 nums[1] 是素数,所以 k = 2,然后 nums[2] 不是素数,所以 k = 1,再次 nums[3] 是素数,所以 k = 2,最后 nums[4] 不是素数,并且 k = 1,我们位于最后一个索引处。

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

  • temp := k
  • 对于 i 从 0 到 arr 的大小 - 1,执行
    • 如果 arr[i] 是素数,则
      • k := temp
    • 否则,
      • k := k - 1
    • 如果 k <= 0 且 i < arr 的大小 - 1 且 arr[i + 1] 不是素数,则
      • 返回 False
  • 返回 True

让我们看看以下实现以获得更好的理解:

示例代码

在线演示

def isPrime(num):
   if num > 1:
      for i in range(2, num):
         if num % i == 0:
           return False
      return True
   return False
 
def solve(arr,k):
   temp = k
   for i in range(len(arr)):
      if isPrime(arr[i]):
         k = temp    
      else:
         k -= 1      
   
      if k <= 0 and i < (len(arr) - 1) and isPrime(arr[i + 1]) == False:
         return False
         
   return True

nums = [8, 5, 6, 7, 8]
k = 2
print(solve(nums, k))

输入

[8, 5, 6, 7, 8], 2

输出

True

更新于: 2021年1月15日

107 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告