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

โปรแกรมตรวจสอบรายการที่กำหนดว่าอยู่ในสถานะที่ถูกต้องหรือไม่ใน Python


สมมติว่าเรามีรายการตัวเลขที่เรียกว่า nums เราต้องตรวจสอบว่าทุกหมายเลขสามารถจัดกลุ่มโดยใช้กฎข้อใดข้อหนึ่งต่อไปนี้:1. คู่ที่อยู่ติดกัน (a, a) 2. แฝดสามที่อยู่ติดกัน (a, a, a) 3. ต่อเนื่องกัน แฝดสาม (a, a + 1, a + 2)

ดังนั้น หากอินพุตมีค่าเท่ากับ nums =[7, 7, 3, 4, 5] ผลลัพธ์จะเป็น True เนื่องจากเราสามารถจัดกลุ่ม [7, 7] เข้าด้วยกันและ [3, 4, 5] เข้าด้วยกันได้

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

  • n :=ขนาดของ nums

  • dp :=รายการขนาด n+1 ค่าแรกเป็นจริง อื่น ๆ เป็นเท็จ

  • สำหรับผมอยู่ในช่วง 2 ถึง n ทำ

    • ถ้า i>=2 และ dp[i − 2] ไม่ใช่ 0 แล้ว

      • ถ้า nums[i − 1] เหมือนกับ nums[i − 2] ดังนั้น

        • dp[i] :=จริง

    • ถ้า i>=3 และ dp[i − 3] ไม่ใช่ 0 แล้ว

      • ถ้า (nums[i − 1], nums[i − 2], nums[i − 3]) เหมือนกันหรือ (nums[i − 1], nums[i − 2] + 1, nums[i − 3] + 2 เหมือนกัน) แล้ว

        • dp[i] :=จริง

  • กลับ dp[n]

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

ตัวอย่าง

class Solution:
   def solve(self, nums):
      n = len(nums)
      dp = [True] + [False] * n
      for i in range(2, n + 1):
         if i >= 2 and dp[i − 2]:
            if nums[i − 1] == nums[i − 2]:
               dp[i] = True
         if i >= 3 and dp[i − 3]:
            if (nums[i − 1] == nums[i − 2] == nums[i − 3]) or (nums[i − 1] == nums[i − 2] + 1 == nums[i − 3] + 2):
               dp[i] = True
         return dp[n]
ob = Solution()
nums = [8, 8, 4, 5, 6]
print(ob.solve(nums))

อินพุต

[8, 8, 4, 5, 6]

ผลลัพธ์

True