题解 | 删除有序链表中重复的元素-I

删除有序链表中重复的元素-I

https://www.nowcoder.com/practice/c087914fae584da886a0091e877f2c79

# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param head ListNode类 
# @return ListNode类
#
class Solution:
    def deleteDuplicates(self , head: ListNode) -> ListNode:
        # 当且仅当存在2个节点时进行处理
        # 双指针跳过重复节点
        if head and head.next:
            p1 = head
            p2 = head.next
            # 当前指针的后继为空停止循环
            while p1.next:
                print(p1.val, p2.val)
                if p1.val == p2.val:
                    p1.next = p2.next
                    p2 = p1.next
                else:
                    p1 = p2
                    p2 = p2.next
        return head

  1. 了解结构体
  2. 特殊情况处理:
  3. 无元素,head为空
  4. 单个元素,head.next为空;上述两种直接返回
  5. 两个元素以上
  6. 双指针,p1,p2
  7. 判断重复,p1不动,重复p2后移;循环退出条件是p1是当前列表最后一个元素,对应的p2=p1.next为空,不会出现NoeType问题
  8. 判断不重复,p1指向p2当前位置,p2初始化为p1的下一个元素
全部评论

相关推荐

10-23 21:54
中南大学 Java
点赞 评论 收藏
分享
09-24 18:30
已编辑
长春工业大学 产品经理
小肥罗:HR就是好人的缩写哈哈哈哈
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务