Given a sorted linked list, delete all duplicates such that each element appear only once.
For example,
Given 1->1->2
, return 1->2
.
Given 1->1->2->3->3
, return 1->2->3
.
非常直接的一题,遍历list,运用set来查重
java:
public class Solution {
public ListNode deleteDuplicates(ListNode head) {
if(head == null) return head;
Set<Integer> set = new HashSet<Integer>();
ListNode node = head;
set.add(head.val);
while(node.next != null){
if(set.contains(node.next.val)){
node.next = node.next.next;
}else{
set.add(node.next.val);
node = node.next;
}
}
return head;
}
}
python:
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
# @param head, a ListNode
# @return a ListNode
def deleteDuplicates(self, head):
if head == None:return head
nodes = set()
node = head
nodes.add(head.val)
while node.next != None:
if node.next.val not in nodes:
nodes.add(node.next.val)
node = node.next
else:
nodes.add(node.next.val)
node.next = node.next.next
return head