给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
示例 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后,,就跳出循环,返回修改后的链表
总结:
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