Giả sử chúng ta có một danh sách các số gọi là num, chúng ta phải kiểm tra xem chúng ta có thể chia danh sách thành hai nhóm A và B sao cho:Tổng của A và tổng của B bằng nhau hay không. Ở đây mọi số trong A đều nhỏ hơn mọi số trong B.
Vì vậy, nếu đầu vào giống như nums =[3, 4, 5, 12], thì đầu ra sẽ là True, vì chúng ta có thể có A =[3,4,5] và B =[12] và cả hai đều có tổng 12 .
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
-
sắp xếp số lượng danh sách
-
Total:=tổng của tất cả các phần tử trong nums
-
s:=0, i:=0
-
trong khi tôi
-
n:=nums [i]
-
trong khi i
-
s:=s + nums [i]
-
i:=i + 1
-
-
nếu s giống với tổng - s, thì
-
trả về True
-
-
-
trả về Sai
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
Ví dụ
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))
Đầu vào
[3, 4, 5, 12]
Đầu ra
True