力扣的删除排序链表中的重复元素解法
题目描述:
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
示例 1:
输入: 1->1->2
输出: 1->2
示例 2:
输入: 1->1->2->3->3
输出: 1->2->3
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
参考程序1:
"""
Definition of ListNode
class ListNode(object):
def __init__(self, val, next=None):
self.val = val
self.next = next
"""
class Solution:
"""
@param result: A ListNode
@return: A ListNode
"""
def deleteDuplicates(self, result):
if result is None:
return result
record = set([result.val])
cur, pre = result.next, result
while cur:
if cur.val in record:
pre.next = cur.next
cur = cur.next
else:
record.add(cur.val)
pre = pre.next
cur = cur.next
return result
运行结果1:
参考程序2:
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
"""
@param result: A ListNode
@return: A ListNode
"""
def deleteDuplicates(self, result):
R = result
if result:
while result and result.next:
if result.val == result.next.val:
result.next = result.next.next
else:
result = result.next
return R
运行结果2:
参考程序3:
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
"""
@param result: A ListNode
@return: A ListNode
"""
def deleteDuplicates(self, result: ListNode) -> ListNode:
if result is None:
return result
a = result
b = result.next
while b!=None:
if b.val!=a.val:
a = b
b = b.next
else:
a.next = b.next
b = b.next
return result
运行结果3: