程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

18:删除链表中重复的结点(剑指offer第2版Python)

发布于2020-02-25 12:20     阅读(637)     评论(0)     点赞(1)     收藏(1)


1、题目描述

在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。

例如,链表1->2->3->3->4->4->5 处理后为 1->2->5

2、代码详解

  1. # -*- coding:utf-8 -*-
  2. class ListNode:
  3. def __init__(self, x):
  4. self.val = x
  5. self.next = None
  6. class Solution:
  7. def deleteDuplication(self, pHead):
  8. dummy = ListNode(0)
  9. dummy.next = pHead
  10. prev = dummy
  11. cur = pHead
  12. while cur != None:
  13. # 有重复值的节点
  14. if cur.next != None and cur.next.val == cur.val:
  15. val = cur.val
  16. # 连续删除重复值
  17. while(cur != None and cur.val == val):
  18. deleteNode = cur
  19. prev.next = cur.next # 前驱节点prev跳过当前重复节点,直接连上cur.next
  20. cur = cur.next
  21. del deleteNode # 删除当前节点
  22. else:
  23. prev = prev.next
  24. cur = cur.next
  25. return dummy.next

测试用例

  1. node1 = ListNode(1)
  2. node2 = ListNode(2)
  3. node3 = ListNode(3)
  4. node4 = ListNode(3)
  5. node5 = ListNode(4)
  6. node6 = ListNode(4)
  7. node7 = ListNode(5)
  8. node1.next = node2
  9. node2.next = node3
  10. node3.next = node4
  11. node4.next = node5
  12. node5.next = node6
  13. node6.next = node7
  14. s = Solution()
  15. # 1->2->5
  16. print(s.deleteDuplication(node1).next.next.val)

 

发布了148 篇原创文章 · 获赞 186 · 访问量 4万+


所属网站分类: 技术文章 > 博客

作者:爸爸去挣钱我去幼儿园

链接:https://www.pythonheidong.com/blog/article/233224/d18a603a221c7ca71768/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

1 0
收藏该文
已收藏

评论内容:(最多支持255个字符)