解题思路-leetcode82题: 删除排序链表中的重复元素 II
题目描述:
给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。
示例 1:
输入: 1->2->3->3->4->4->5
输出: 1->2->5
示例 2:
输入: 1->1->1->2->3
输出: 2->3
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路:
本题采用双指针的方法解题,首先定义两个相同的链表,然后将其指向输入链表。遍历输入链表,若未发现相同元素,则两个链表同时向后移动,若发现相同元素,则输入链表向后移动,移动到没有相同元素时,将新建立的链表指向下一个遍历的元素,由此删去重复节点,最后返回新建链表。
# 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: ListNode) -> ListNode:
dummy = pre = ListNode(0)
dummy.next = head
while head and head.next:
if head.val == head.next.val:
while head and head.next and head.val == head.next.val:
head = head.next
head = head.next
pre.next = head
else:
head = head.next
pre = pre.next
return dummy.next
提交后,通过。