檢查給定的數字 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
廣告