Python程式檢查長度為m的模式是否在陣列中重複出現K次或更多次


假設我們有一個包含正值的陣列 nums,我們需要找到一個長度為 m 的模式,該模式重複出現 k 次或 k 次以上。這裡,模式是指一個不重疊的子陣列(連續的),它包含一個或多個值,並且重複多次。模式由其長度和重複次數定義。我們需要檢查是否存在長度為 m 的模式,該模式重複出現 k 次或更多次。

因此,如果輸入類似於 nums = [3,5,1,4,3,1,4,3,1,4,3,9,6,1],m = 3,k = 2,則輸出將為 True,因為存在模式 [1,4,3],它出現了 3 次。

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

  • 對於 i 從 0 到 nums 大小 - 1,執行以下操作:

    • sub1 := 從索引 i 到 (i+m*k) - 1 的 nums 的子陣列

    • sub2 := 從索引 i 到 (i+m-1) 的 nums 的 k 個連續子陣列

    • 如果 sub1 與 sub2 相同,則

      • 返回 True

  • 返回 False

示例(Python)

讓我們看看以下實現以更好地理解:

 線上演示

def solve(nums, m, k):
   for i in range(len(nums)):
      sub1 = nums[i:i+m*k]
      sub2 = nums[i:i+m]*k
      if sub1 == sub2:
         return True
   return False

nums = [3,5,1,4,3,1,4,3,1,4,3,9,6,1]
m = 3
k = 2
print(solve(nums, m, k))

輸入

[3,5,1,4,3,1,4,3,1,4,3,9,6,1], 3, 2

輸出

True

更新於: 2021年5月17日

161 次瀏覽

開啟你的 職業生涯

完成課程獲得認證

立即開始
廣告