博客
关于我
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 常见ALTER TABLE操作
查看>>
MySQL 常见的 9 种优化方法
查看>>
MySQL 常见的开放性问题
查看>>
Mysql 常见错误
查看>>
mysql 常见问题
查看>>
MYSQL 幻读(Phantom Problem)不可重复读
查看>>
mysql 往字段后面加字符串
查看>>
mysql 快照读 幻读_innodb当前读 与 快照读 and rr级别是否真正避免了幻读
查看>>
MySQL 快速创建千万级测试数据
查看>>
mysql 快速自增假数据, 新增假数据,mysql自增假数据
查看>>
MySql 手动执行主从备份
查看>>
Mysql 批量修改四种方式效率对比(一)
查看>>
Mysql 报错 Field 'id' doesn't have a default value
查看>>
MySQL 报错:Duplicate entry 'xxx' for key 'UNIQ_XXXX'
查看>>
Mysql 拼接多个字段作为查询条件查询方法
查看>>
mysql 排序id_mysql如何按特定id排序
查看>>
Mysql 提示:Communication link failure
查看>>
mysql 插入是否成功_PDO mysql:如何知道插入是否成功
查看>>