Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

วิธีตรวจสอบว่า Linked List มีข้อมูลทุกตัวเป็นคู่ (Even Count) ใน Python

ปัญหา

กำหนด Singly Linked List ตรวจสอบว่าทุกค่าที่ปรากฏ มีจำนวนครั้งเป็นเลขคู่ (คืออยู่ในคู่)

ตัวอย่าง: [2,5,5,2,3,3] → ทุกตัวเป็นคู่ → True

แนวทางแก้ปัญหา

ใช้คุณสมบัติ XOR: x ^ x = 0 และ x ^ 0 = x หากทุกตัวเป็นคู่ XOR ทั้งหมดจะได้ 0

ตัวอย่างโค้ด

class ListNode:
    def __init__(self, data, next=None):
        self.val = data
        self.next = next

def make_list(elements):
    head = ListNode(elements[0])
    for element in elements[1:]:
        ptr = head
        while ptr.next:
            ptr = ptr.next
        ptr.next = ListNode(element)
    return head

def solve(head):
    xor_res = 0
    current_node = head
    while current_node:
        xor_res ^= current_node.val
        current_node = current_node.next
    return False if xor_res else True

head = make_list([2, 5, 5, 2, 3, 3])
print(solve(head))  # True

อินพุต / เอาต์พุต

Input: [2,5,5,2,3,3]
Output: True