检查给定的数字 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
- 如果 arr[i] 是素数,则
- 返回 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
广告