สมมติว่าเรามีรายการตัวเลขที่เรียกว่า nums เราต้องตรวจสอบว่าเราสามารถแบ่งรายการออกเป็นสองกลุ่ม A และ B ได้หรือไม่ โดยผลรวมของ A และผลรวมของ B จะเท่ากัน ในที่นี้ทุกจำนวนใน A จะน้อยกว่าทุกจำนวนใน B อย่างเคร่งครัด
ดังนั้น หากอินพุตเป็น nums =[3, 4, 5, 12] ผลลัพธ์จะเป็น True เนื่องจากเราสามารถมี A =[3,4,5] และ B =[12] และทั้งคู่มีผลรวม 12 .
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
เรียงเลขรายการ
-
ทั้งหมด :=ผลรวมขององค์ประกอบทั้งหมดเป็น nums
-
s :=0, ผม :=0
-
ในขณะที่ฉัน <ขนาดของ nums ทำ
-
n :=nums[i]
-
ในขณะที่ i <ขนาดของ nums และ nums[i] เหมือนกับ n ให้ทำ
-
s :=s + nums[i]
-
ผม :=ผม + 1
-
-
ถ้า s เท่ากับผลรวม − s แล้ว
-
คืนค่า True
-
-
-
คืนค่าเท็จ
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
class Solution: def solve(self, nums): nums.sort() total = sum(nums) s = 0 i = 0 while i < len(nums): n = nums[i] while i < len(nums) and nums[i] == n: s += nums[i] i += 1 if s == total - s: return True return False ob = Solution() nums = [3, 4, 5, 12] print(ob.solve(nums))
อินพุต
[3, 4, 5, 12]
ผลลัพธ์
True