สมมุติว่าเรามีเพื่อนชื่อบ๊อบ และกำลังเล่นเกมกับตัวเอง เขาให้รายชื่อหมายเลขที่เรียกว่า nums แก่ตัวเอง ในแต่ละเทิร์น บ๊อบจะเลือกสององค์ประกอบของรายการและแทนที่ด้วยจำนวนเต็มบวกหนึ่งตัวด้วยผลรวมเดียวกันกับตัวเลขที่เขาเลือก บ๊อบประกาศชัยชนะเมื่อจำนวนทั้งหมดในอาร์เรย์เป็นเลขคู่ เราต้องหาจำนวนเทิร์นขั้นต่ำที่ Bob ต้องทำ เพื่อที่เขาจะได้ประกาศชัยชนะ หากไม่มีวิธีแก้ปัญหา ให้คืนค่า -1
ดังนั้น หากอินพุตเป็น [2, 3, 4, 9, 7, 13] ผลลัพธ์จะเป็น 2 เนื่องจากเขาสามารถรับ 3.9 ได้ จากนั้นแทนที่ด้วย 12 จากนั้นใช้ 7,13 และแทนที่ด้วย 20
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
a :=รายการโดยนำองค์ประกอบคี่จากตัวเลขเท่านั้น
-
ถ้าขนาดของ a เป็นคี่ แล้ว
-
ผลตอบแทน (ขนาด)/2
-
-
มิฉะนั้นให้ส่งคืน -1
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น −
ตัวอย่าง
class Solution: def solve(self, nums): a = [x for x in nums if x %2 == 1] if len(a) %2 == 0: return len(a)/2; return -1; ob = Solution() print(ob.solve([2, 3, 4, 9, 7, 13]))
อินพุต
[2, 3, 4, 9, 7, 13]
ผลลัพธ์
2