检查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]

Learn Python in-depth with real-world projects through our Python certification course. Enroll and become a certified expert to boost your career.

输出

True

更新于:2020年8月27日

124次浏览

开启你的职业生涯

通过完成课程获得认证

开始学习
广告