Cho danh sách nums. Kiểm tra xem mọi số đều xuất hiện số lần chẵn hay không. Yêu cầu dùng không gian O(1) (không dùng dictionary/hashmap).
Ví dụ: nums = [8, 9, 9, 8, 5, 5] → True (mọi số xuất hiện 2 lần).
Thuật toán giải quyết (Sắp xếp + Ghép cặp O(n log n))
- Nếu độ dài
numslẻ: trả vềFalse - Sắp xếp
nums - Duyệt
itừ 1 đếnlen(nums)-1:- Nếu
nums[i] == nums[i-1]: gán cả hai = 0 (đánh dấu đã ghép cặp)
- Nếu
- Trả về
Truenếu tổng mảng = 0, ngược lạiFalse
Ví dụ minh họa
def solve(nums):
if len(nums) & 1:
return False
nums.sort()
for i in range(1, len(nums)):
if nums[i] == nums[i-1]:
nums[i] = nums[i-1] = 0
return sum(nums) == 0
nums = [8, 9, 9, 8, 5, 5]
print(solve(nums))
Đầu vào
[8, 9, 9, 8, 5, 5]
Đầu ra
True