Given a sorted linked list, delete all duplicates such that each element appear only once.
Example 1:
Input: 1->1->2
Output: 1->2
Example 2:
Input: 1->1->2->3->3
Output: 1->2->3
<思路>如果链表为空,或者只有一个节点,直接返回。如果链表有下一个节点,比较val,相同则将next越过,不同则继续向下查找。
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution(object):
def deleteDuplicates(self, head):
"""
:type head: ListNode
:rtype: ListNode
"""
if not head:
return head
rhead = head
while head.next:
if head.val==head.next.val:
head.next = head.next.next
else:
head = head.next
return rhead
新建一个链表,把符合要求的点加进去
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution(object):
def deleteDuplicates(self, head):
"""
:type head: ListNode
:rtype: ListNode
"""
dummy = p = ListNode(-1)
p.next = head
while head and head.next:
while head.next and head.val==head.next.val:
head=head.next
head=head.next
p=p.next
p.next=head
return dummy.next