原题
解题思路
遍历节点,如果当前节点的后驱节点与本节点的值一致,删除后驱节点。
图解
代码
public class Solution83 {
public ListNode deleteDuplicates(ListNode head) {
if (head == null ||head.next == null)
return head;
ListNode node1 = head;
ListNode node2 = head.next;
while (node2 != null){
// 如果node1与node2值相同, 在链表中删去node2,新的node2指向下一个节点
if (node1.val == node2.val){
node1.next = node2.next;
node2.next = null;
node2 = node1.next;
}
//如果当前node与下一个node值不同,那么node1与node2各自前进1位
else {
node1 = node2;
node2 = node1.next;
}
}
return head;
}
}