สมมติว่าเพื่อนสองคน 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