leetcode的python实现 刷题笔记83:删除排序链表中的重复元素

给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。

示例 1:

输入: 1->1->2
输出: 1->2

示例 2:

输入: 1->1->2->3->3
输出: 1->2->3
class Solution(object):
    def deleteDuplicates(self, head):
        """
        :type head: ListNode
        :rtype: ListNode
        """
        # 定义一个空链表
        lianbiao = ListNode(None)
        # 然后将这个空链表的指向传入的链表
        lianbiao.next = head
        # 用p来表示这个链表
        p = lianbiao

        # 当前节点存在并且当前节点的next指向也存在,就遍历链表
        while p and p.next:
            # 判断当前节点与下一个节点的大小关系
            if p.val == p.next.val:
                # 如果相等就把当前节点的next指向下下个节点的next,也就是相当于把下一个节点给删除了
                p.next = p.next.next
            else:
                # 否则就继续判断下个节点与下下个节点间的关系
                p = p.next
        # 遍历完后,返回修改后的链表
        return lianbiao.next

思路:

1.首先构造一个空链表与传入的链表相结合,然后用一个比较简单的字母代替链表。

2.然后遍历链表,判断当前的节点与下一个节点的值是否相等,如果相等,就把当前节点的next指向下下个节点,否则就继续判断下一个节点与下下个节点间的关系。

3.当所有节点遍历完,发现最后一个节点没有next后,,就跳出循环,返回修改后的链表

总结:

1.数组和链表之间的区别与优缺点

2.链表的一些常用操作:

create_linked_list: __init__(),创建链表
is_empty():判断该链表是否为空
append(value):在链表末添加node/值
insert(value, index):插入
delete(index):删除
update(value, index):更新
get_value(index):查找
get_length():获取链表长度
clear():清空链表
print_linked_list():打印整个链表

3.空链表值关注值和next,其他链表则要关注值,head,next

4.链表的定义和用法https://www.cnblogs.com/king-ding/p/pythonchaintable.html

猜你喜欢

转载自blog.csdn.net/weixin_41931602/article/details/82915937