Giả sử chúng ta có một mảng nums chỉ chứa các số 1 và 2. Cần kiểm tra xem mảng có thể chia thành hai phần khác nhau sao cho tổng các phần tử trong mỗi phần bằng nhau hay không.
Ví dụ, nếu đầu vào là nums = [1, 1, 2, 2, 2], thì đầu ra sẽ là True vì có thể chia thành [1, 1, 2] và [2, 2], cả hai đều có tổng bằng 4.
Các bước giải quyết:
- total := 0, one_count := 0.
- total := tổng các phần tử của nums.
- one_count := số lượng số 1 trong nums.
- Nếu total là số lẻ, trả về False.
- Nếu phần nguyên của (total / 2) là số chẵn, trả về True.
- Nếu one_count > 0, trả về True.
- Ngược lại, trả về False.
Xem ví dụ dưới đây để hiểu rõ hơn:
Ví dụ
def solve(nums):
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))
Đầu vào
[1, 1, 2, 2, 2]
Đầu ra
True