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

โปรแกรมหาจำนวนย้ายเพื่อชนะการลบเกมจำนวนเต็มซ้ำใน Python


สมมติว่าเพื่อนสองคน Amal และ Bimal กำลังเล่นเกมโดยใช้รายการหมายเลขที่เรียกว่า nums ในเกมนี้ในเทิร์นเดียว Amal เลือกตัวเลขสามตัวใดก็ได้ Bimal ลบหนึ่งในนั้นออก จากนั้น Amal ก็ลบหนึ่งในนั้นออก รายการเริ่มต้นด้วยองค์ประกอบจำนวนคี่ ที่นี่ Amla ต้องการลดจำนวนรอบที่จำเป็นเพื่อให้รายการไม่มีองค์ประกอบซ้ำ Bimal ต้องการเพิ่มจำนวนรอบสูงสุด หาก Amal และ Bimal ทำหน้าที่ได้ดีที่สุด เราต้องหาจำนวนเทิร์นที่จำเป็นสำหรับเกมนี้

ดังนั้น หากอินพุตมีค่าเท่ากับ nums =[1, 1, 2, 3, 3, 3, 4] ผลลัพธ์จะเป็น 2 เนื่องจากหาก Amal เลือก [1, 1, 3] Bimal จะลบ 3 ออกเพื่อขยายให้ใหญ่สุด ผลัดกัน อาร์เรย์คือ [1, 1, 2, 3, 3, 4], Amal ลบ 1 ดังนั้นอาร์เรย์คือ [1,2,3,3,4] จากนั้นในเทิร์นถัดไป Amal เลือก [3,3, 4] จากนั้น Bimal จะลบ 4 เพื่อเพิ่มรอบสูงสุด ดังนั้น Amal สามารถลบ 3 และอาร์เรย์จะเป็น [1,2,3] ไม่มีองค์ประกอบที่ซ้ำกัน

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

ซ้ำ :=0

สำหรับฉันในช่วง 1 ถึงขนาดของ nums ทำ

ถ้า nums[i] เหมือนกับ nums[i-1] แล้ว

ซ้ำ :=ซ้ำ + 1

ผลหารกลับของ (ซ้ำ + 1) / 2

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

ตัวอย่าง

class Solution:
   def solve(self, nums):
      repeats = 0
      for i in range(1, len(nums)):
         if nums[i] == nums[i-1]:
            repeats += 1
      return (repeats + 1) // 2
ob = Solution()
nums = [1, 1, 2, 3, 3, 3, 4]
print(ob.solve(nums))

อินพุต

[1, 1, 2, 3, 3, 3, 4]

ผลลัพธ์

2