Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Chương trình kiểm tra tần suất xuất hiện của tất cả phần tử có chẵn không trong Python

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))

  1. Nếu độ dài nums lẻ: trả về False
  2. Sắp xếp nums
  3. Duyệt i từ 1 đến len(nums)-1:
    • Nếu nums[i] == nums[i-1]: gán cả hai = 0 (đánh dấu đã ghép cặp)
  4. Trả về True nếu tổng mảng = 0, ngược lại False

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