题目描述

在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5

# Definition for singly-linked list.

class ListNode:

def __init__(self, x):

self.val = x

self.next = None

class Solution:

def deleteDuplication(self, head):

"""

给定一个有序的链表,删除所有重复的节点

"""

# 我们先设置一个辅助节点

# begin用来定位在返回链表的头节点的前一个节点(辅助节点)上

# pre_node用来定位返回链表的尾节点

begin = pre_node = ListNode(0)

while head:

c = 0 # 当前值出现的次数,初始化为0可以使后续代码更简洁

val = head.val # 当前值

# 记录当前节点,因为无论如何,head都会往前移动一次,当下面这个while退出之后,

# cur != head

cur = head

# 当前值连续出现的次数

while head and head.val == val:

c += 1

head = head.next

# 如果当前值只连续出现过1次,说明不是重复节点,需要将当前节点添加到链表的末尾

# 由于pre_node是定位尾节点的,所以每次添加一个尾节点的时候,需要将原尾节点(pre_node)

# 和新的尾节点连接起来,然后将pre_node重新定位到链表的尾节点

if c == 1:

pre_node.next = cur

pre_node = pre_node.next

# 当遍历完整个链表之后,注意要将尾节点与Null连接起来

pre_node.next = None

# begin在头节点的前一个节点(辅助节点)上,因此返回begin.next

return begin.next

python删除链表中重复的节点_剑指offer:删除链表中重复的节点相关推荐

  1. 找第一个只出现一次的字符_剑指offer 字符流中第一个只出现一次的字符

    题目描述: 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是'g'.当从该字符流中读出前六个字" ...

  2. 在数组中查找指定元素_剑指 offer 第一题: 二维数组中的查找

    题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数 ...

  3. 力扣—— 19. 删除链表的倒数第 N 个结点(java)、剑指 Offer 22. 链表中倒数第k个节点(java)

    19. 删除链表的倒数第 N 个结点(java) 一.题目描述 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点. 进阶:你能尝试使用一趟扫描实现吗? 输入:head = [1,2,3 ...

  4. 【每日一题】剑指 Offer 22. 链表中倒数第k个节点

    剑指 Offer 22. 链表中倒数第k个节点

  5. 【LeetCode】剑指 Offer 22. 链表中倒数第k个节点

    [LeetCode]剑指 Offer 22. 链表中倒数第k个节点 文章目录 [LeetCode]剑指 Offer 22. 链表中倒数第k个节点 一.遍历 二.双指针 总结 一.遍历 先遍历统计链表长 ...

  6. java中数组的下标比较_【Java】 剑指offer(53-3) 数组中数值和下标相等的元素

    本文参考自<剑指offer>一书,代码采用Java语言. 题目 假设一个单调递增的数组里的每个元素都是整数并且是唯一的.请编程实现一个函数找出数组中任意一个数值等于其下标的元素.例如,在数 ...

  7. leetcode 打印_剑指 Offer 总结 - leetcode 剑指offer系列

    剑指 Offer 系列完结撒花!! 本篇文章是对整个系列的精华总结, 对系列的每篇文章进行了分类, 并用一句话概括每道题的思路, 方便大家理解和记忆, 当然也包含原文完整链接供大家参考 总的来说, 写 ...

  8. 【LeetCode】剑指 Offer 62. 圆圈中最后剩下的数字

    [LeetCode]剑指 Offer 62. 圆圈中最后剩下的数字 文章目录 [LeetCode]剑指 Offer 62. 圆圈中最后剩下的数字 一.动态规划 总结 一.动态规划 构建一个长度为 n ...

  9. 字符串全排列算法_C#版_剑指OFFER

    字符串全排列算法_C#版_剑指OFFER 题目描述 ​题目描述 输入一个长度为 n 字符串,打印出该字符串中字符的所有排列,你可以以任意顺序返回这个字符串数组. 例如输入字符串ABC,则输出由字符A, ...

最新文章

  1. 快速上手MyBatisPlus~(基友搭配,效率翻倍)
  2. 【技术综述】万字长文详解Faster RCNN源代码
  3. Eclipse Add generated serial version ID报错解决方案
  4. playframe 项目搭建
  5. CloudStack 配置高级网络简明手册
  6. input标签中使输入文本向右偏移像素解决方案(亲测有效)
  7. DeepMind的脑补AI再获新技能:看文字知场景、复杂环境、连续视频……
  8. HTML:常用特殊字符编码表(自用)
  9. Map集合的遍历方式(3种)
  10. 【C++】《C++ Primer Plus》--复习题、编程练习题答案
  11. 微信Emoji工具-EmojiUtil
  12. 人工智能杂记 人工智能简史
  13. AD13如何导出坐标文件
  14. 三维空间中鼠标点击选择线段的方法
  15. php强类型作用,强类型php性能很彪悍
  16. 注册企业腾讯邮箱需要对GoDaddy设置域名解析
  17. AMESim锂离子电池包电化学机理模型
  18. Portainer添加远程Docker(Docker API)
  19. 程序员必备神器(GifCam)
  20. 【Python基础】python中的re模块

热门文章

  1. PHP中普通方法如何调用静态属性,php中的静态属性和静态方法如何调用
  2. 高并发 python socket send 异步_对于Python中socket.listen()与多线程结合的困惑?
  3. 高等专科学校计算机,理工类计算机专业较好的高等专科学校
  4. java的classpath是什么_JAVA初学者classpath设置情况是什么?
  5. mysql的dml全,MySQL数据管理----DML语言(全记住)(示例代码)
  6. php 提交表单跳转页面,form表单页面跳转方式提交练习
  7. 通Python实现操作 excel表格 工作效率提升百倍
  8. Python基础教程:xrange和range的使用区别
  9. python 错误、调试、单元测试、文档测试
  10. Python加lxml实现图片解析下载功能