博客
关于我
python去掉重复的数字_leetcode删除列表的重复元素python解法
阅读量:398 次
发布时间:2019-03-05

本文共 887 字,大约阅读时间需要 2 分钟。

题目:

给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现的数字。

示例 1:

输入: 1->2->3->3->4->4->5

输出: 1->2->5

示例 2:

输入: 1->1->1->2->3

输出: 2->3

先上自己的提交记录:

我太难了!!

解题思路:

1、新建虚拟头结点,这是为了解决头节点就和后面的节点重复的情况

2、使用两个指针pre、cur,pre指向虚拟头节点,cur指向虚拟头节点的next也即head,然后使用cur遍历链表,然后找到存在重复元素的值,再一个循环,使cur指向重复元素的最后一个,然后令pre.next = cur.next即删除了所有的重复元素。

3、小心while中访问空指针就行,最后返回结果

源代码如下:

# Definition for singly-linked list.

# class ListNode:

# def __init__(self, x):

# self.val = x

# self.next = None

class Solution:

def deleteDuplicates(self, head: ListNode) -> ListNode:

#if head is None or head.next is None

#if not head

dummy_head = ListNode(0)

dummy_head.next = head

pre = dummy_head

cur = head

while cur:

if cur.next and cur.val == cur.next.val:

while cur.next and cur.val == cur.next.val:

cur = cur.next

# cur.val != cur.next.val

pre.next = cur.next

cur = cur.next

continue

pre = pre.next

cur = cur.next

return dummy_head.next

转载地址:http://sdjg.baihongyu.com/

你可能感兴趣的文章
mysql 中索引的问题
查看>>
MySQL 中锁的面试题总结
查看>>
MySQL 中随机抽样:order by rand limit 的替代方案
查看>>
MySQL 为什么需要两阶段提交?
查看>>
mysql 为某个字段的值加前缀、去掉前缀
查看>>
mysql 主从
查看>>
mysql 主从 lock_mysql 主从同步权限mysql 行锁的实现
查看>>
mysql 主从互备份_mysql互为主从实战设置详解及自动化备份(Centos7.2)
查看>>
mysql 主从关系切换
查看>>
MYSQL 主从同步文档的大坑
查看>>
mysql 主键重复则覆盖_数据库主键不能重复
查看>>
Mysql 事务知识点与优化建议
查看>>
Mysql 优化 or
查看>>
mysql 优化器 key_mysql – 选择*和查询优化器
查看>>
MySQL 优化:Explain 执行计划详解
查看>>
Mysql 会导致锁表的语法
查看>>
mysql 使用sql文件恢复数据库
查看>>
mysql 修改默认字符集为utf8
查看>>
Mysql 共享锁
查看>>
MySQL 内核深度优化
查看>>