Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ตรวจสอบว่ามีคีย์อยู่ในทุกส่วนของขนาด k ในอาร์เรย์ใน Python . หรือไม่


สมมติว่าเรามีอาร์เรย์ A ที่มีองค์ประกอบ N เรามีค่าอื่น p และขนาดกลุ่ม k เราต้องตรวจสอบว่ามีคีย์ p อยู่ในทุกส่วนของขนาด k ใน A หรือไม่

ดังนั้น หากอินพุตเป็น A =[4, 6, 3, 5, 10, 4, 2, 8, 4, 12, 13, 4], p =4 และ k =3 ผลลัพธ์จะเป็น True

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • ผม :=0
  • ในขณะที่ i
  • j :=0
  • ในขณะที่ j
  • ถ้า arr[j + i] เหมือนกับ p แล้ว
    • แตก
  • j :=j + 1
  • ถ้า j เหมือนกับ k แล้ว
    • คืนค่าเท็จ
  • ผม :=ผม + k
  • ถ้าฉันเหมือนกับ n แล้ว
    • คืนค่า True
  • j :=ฉัน - k
  • ในขณะที่ j
  • ถ้า arr[j] เหมือนกับ p แล้ว
    • แตก
  • j :=j + 1
  • ถ้า j เหมือนกับ n แล้ว
    • คืนค่าเท็จ
  • คืนค่า 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