更多题解,请关注公众号:程序员学长,让你进大厂不走弯路
删除有序链表中重复的元素-I
问题描述
删除给出链表中的重复元素(链表中元素从小到大有序),使链表中的所有元素都只出现一次。
示例:
输入:{1,1,2}
输出:{1,2}
分析问题
因为给定的链表是排好序的,所以我们可以知道重复的元素在链表中出现的位置一定是连续的,因此我们只需要对链表进行一次遍历,就可以删除重复的元素。
开始时,我们定义一个指针cur指向链表的头结点,然后开始对链表进行遍历。如果cur.val==cur.next.val时,我们就将cur.next这个节点从链表中移除;如果不相同,我们将指针cur后移,即cur=cur.next。当遍历完整个链表之后,我们返回链表的头结点即可。

下面我们来看一下代码的实现。
class Solution:
    def deleteDuplicates(self, head):
        #如果链表为空,直接返回
        if not head:
            return head
        #cur指向头结点
        cur = head
        #当cur.next不为空时
        while cur.next:
            #如果值相同,删除cur.next节点
            if cur.val == cur.next.val:
                cur.next = cur.next.next
            #否则cur后移
            else:
                cur = cur.next
        return head
该算法的时间复杂度是O(N),空间复杂度是O(1)。



京公网安备 11010502036488号