檢查Python陣列中大小為k的每個片段中是否存在鍵


假設我們有一個包含N個元素的陣列A,還有一個值p和一個片段大小k,我們需要檢查鍵p是否出現在A中每個大小為k的片段中。

因此,如果輸入類似於A = [4, 6, 3, 5, 10, 4, 2, 8, 4, 12, 13, 4],p = 4,k = 3,則輸出為True

為了解決這個問題,我們將遵循以下步驟:

  • i := 0
  • 當i < n非零時,執行:
    • j := 0
    • 當j < k時,執行:
      • 如果arr[j + i]與p相同,則:
        • 跳出迴圈
      • j := j + 1
    • 如果j與k相同,則:
      • 返回False
    • i := i + k
  • 如果i與n相同,則:
    • 返回True
  • j := i - k
  • 當j < n時,執行:
    • 如果arr[j]與p相同,則:
      • 跳出迴圈
    • j := j + 1
  • 如果j與n相同,則:
    • 返回False
  • 返回True

示例

讓我們來看下面的實現,以便更好地理解:

線上演示

def key_in_segment_k(arr, p, k, n) :
   i = 0
   while i < n :
      j = 0
      while j < k :
         if arr[j + i] == p :
            break
         j += 1
      if j == k :
         return False
      i = i + k
   if i == n :
      return True
   j = i - k
   while j < n :
      if arr[j] == p :
         break
      j += 1
   if j == n :
      return False
   return True
arr = [4, 6, 3, 5, 10, 4, 2, 8, 4, 12, 13, 4]
p, k = 4, 3
n = len(arr)
print(key_in_segment_k(arr, p, k, n))

輸入

[4, 6, 3, 5, 10, 4, 2, 8, 4, 12, 13, 4]

輸出

True

更新於:2020年8月27日

124次瀏覽

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.