สมมติว่าเรามีจำนวนอาร์เรย์ที่เก็บได้เพียง 1 และ 2 เท่านั้น เราต้องตรวจสอบว่าอาร์เรย์สามารถแบ่งออกเป็นสองส่วนที่แตกต่างกันได้หรือไม่ ดังนั้นผลรวมขององค์ประกอบในแต่ละส่วนจะเท่ากัน
ดังนั้น หากอินพุตมีค่าเท่ากับ nums =[1, 1, 2, 2, 2] ผลลัพธ์จะเป็น True เนื่องจากเราสามารถแบ่งอาร์เรย์นี้ได้เช่น [1, 1, 2] และ [2, 2] ผลรวมของ แต่ละส่วนคือ 4.
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- รวม :=0, one_count :=0
- ผลรวม :=ผลรวมขององค์ประกอบทั้งหมดของ nums
- one_count :=นับ 1 วินาทีในหน่วย nums
- ถ้าผลรวมเป็นคู่
- คืนค่าเท็จ
- ถ้าส่วนจำนวนเต็มของ (ผลรวม / 2) เป็นคู่ ดังนั้น
- คืนค่า True
- ถ้า one_count> 0 แล้ว
- คืนค่า True
- มิฉะนั้น
- คืนค่าเท็จ
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
def solve(nums): total = 0 one_count = 0 total = sum(nums) one_count = nums.count(1) if total % 2: return False if (total // 2) % 2 == 0: return True if one_count > 0: return True else: return False nums = [1, 1, 2, 2, 2] print(solve(nums))
อินพุต
[1, 1, 2, 2, 2]
ผลลัพธ์
True