Question
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]
Constraints:
- The number of nodes in the list is in the range
[0, 300]. -100 <= Node.val <= 100- The list is guaranteed to be sorted in ascending order.
Python Solution
# 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):
"""
:type head: ListNode
:rtype: ListNode
"""
dummy = ListNode(0); # construct a dummy node
dummy.next = head
pre = dummy # set up pre and cur pointers
cur = head
while cur:
if cur.next and cur.val == cur.next.val:
# loop until cur point to the last duplicates
while cur and cur.next and cur.val == cur.next.val:
cur = cur.next
pre.next = cur.next # propose the next for pre
# this will be verified by next line
else:
pre = pre.next
cur = cur.next
return dummy.next

![[Solved] You are given an integer n and an integer start. Define an array nums where nums[i] = start + 2 * i (0-indexed) and n == nums.length. Return the bitwise XOR of all elements of nums.](https://machinelearningprojects.net/wp-content/uploads/2022/09/Leetcode-solutions-MLP-Feature-Image-1024x536.webp)