题目描述:
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
示例 1:
输入: 1->1->2
输出: 1->2
示例 2:
输入: 1->1->2->3->3
输出: 1->2->3
解题思路:
这道题思路很简单,就是判断上一个节点的值和下一个节点的值是否相等,若相等,则删除节点。
循环判断。
我觉得这道题主要是考链表删除操作。
代码实现:
# Definition for singly-linked list.
class ListNode(object):
def __init__(self, x):
self.val = x
self.next = None
class Solution(object):
def deleteDuplicates(self, head):
"""
:type head: ListNode
:rtype: ListNode
"""
if(head == None or head.next == None):
return head
root = head
while(root.next):
nextNode = root.next
if(root.val == nextNode.val):
root.next = nextNode.next
else:
root = root.next
return head
def printLink(self,root):
r = root
while(r):
print(r.val)
r = r.next
root = ListNode(1)
n2 = ListNode(2)
n3 = ListNode(2)
n4 = ListNode(4)
n5 = ListNode(5)
root.next = n2
n2.next = n3
n3.next = n4
n4.next = n5
s = Solution()
result = s.deleteDuplicates(root)
s.printLink(result)