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

โปรแกรมตรวจสอบรูปแบบซ้ำของอาร์เรย์ใน Python


ตรวจสอบว่ามีรูปแบบยาว m ซ้ำ k ครั้งขึ้นไปหรือไม่

ให้อาร์เรย์ nums ที่มีค่าบวก เราต้องการตรวจสอบว่ามีรูปแบบ (pattern) ยาว m ที่ซ้ำกันอย่างน้อย k ครั้งหรือไม่ รูปแบบหมายถึงช่วงย่อย (subarray) ที่ต่อเนื่องและไม่ทับซ้อนกัน ประกอบด้วยค่าหนึ่งหรือหลายค่า ที่ซ้ำหลายครั้ง

ตัวอย่าง

nums = [3,5,1,4,3,1,4,3,1,4,3,9,6,1], m = 3, k = 2

ผลลัพธ์: True เพราะมีรูปแบบ [1,4,3] ซ้ำ 3 ครั้ง

ขั้นตอนการแก้ปัญหา

  1. วนลูป i จาก 0 ถึงความยาว nums - 1
  2. sub1 := ช่วงย่อยของ nums จากดัชนี i ถึง (i + m*k) - 1
  3. sub2 := ช่วงย่อย k ชุดติดกันของ nums จากดัชนี i ถึง (i + m - 1)
  4. ถ้า sub1 เท่ากับ sub2 ให้คืนค่า True
  5. จบลูป ให้คืนค่า 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))  # Output: True

อินพุต

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

เอาต์พุต

True