Given the head of a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list. Return the linked list sorted as well.
Example 1:
Input: head = [1,2,3,3,4,4,5]
Output: [1,2,5]
Example 2:
Input: head = [1,1,1,2,3]
Output: [2,3]

# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def deleteDuplicates(self, head: Optional[ListNode]) -> Optional[ListNode]:
#스택을 이용
#스택의 마지막 값 == 현재 값 -> 중복 ->
#스택의 마지막 값 != 현재 값 -> x 중복 -> 연결
stack = []
dup = -111
node = head
while node:
if stack:
if node.val == stack[-1].val:
stack.pop()
dup = node.val
if stack: stack[-1].next = None
elif dup != node.val:
stack[-1].next = node
stack.append(node)
else:
if dup != node.val:
stack.append(node)
node = node.next
if stack: return stack[0]
else: return None