@Scrazy
2017-04-12T13:58:17.000000Z
字数 588
阅读 969
python
算法
所谓的删除是指:
如果这个值重复了,就把它删除的一个不剩。
思路:
1. 假设 链表顺序是 A->B->C->D->E-> ...
2. 构建一个新的链表 current
3. if 分支用于删除多个连续重复节点 例如 A B C D ...
4. else 使用 current 作为中间变量,删除非连续的重复值 eg: B D ...
# -*- coding:utf-8 -*-
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def deleteDuplication(self, pHead):
if not pHead:
return None
elif not pHead.next:
return pHead
current = None
if pHead.next.val == pHead.val: # 此分支用于删除多个连续重复的节点
current = pHead.next.next
while current and current.val == pHead.val:
current = current.next
return self.deleteDuplication(current)
else:
current = pHead.next
pHead.next = self.deleteDuplication(current)
return pHead