檢查給定的數字 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 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告