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
.
逐个node检查值是否与后一个node相等.
如果相等, 则将node.next指向再下一个node(node.next.next), 然后再一次检查.
如果不等, 则跳过当前node (node = node.next), 检查下一个node.
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {
* val = x;
* next = null;
* }
* }
*/
public class Solution {
public ListNode deleteDuplicates(ListNode head) {
// exception case
if (head == null) return head;
// keep "head" always the head of the linked list (for return), while "node" can move node by node in the linked list.
ListNode node = head;
while (node.next != null){
// case of same value, point node.next to the node after next node
if (node.val == node.next.val){
if (node.next.next != null)
node.next = node.next.next;
// if no node after next node, point node.next to null
else
node.next = null;
}
// case of not the same value, check the next node
else
node = node.next;
}
return head;
}
}