需要注意审题,题目要求是将重复的节点都删除,不要把3和4也留下。
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode deleteDuplicates(ListNode head) {
ListNode dump = new ListNode(0,head);
ListNode temp = dump;
while(temp.next != null && temp.next.next != null){
if(temp.next.val == temp.next.next.val){
int x = temp.next.val;
while(temp.next!=null && temp.next.val == x){
temp.next = temp.next.next;
}
}else{
temp = temp.next;
}
}
return dump.next;
}
}
还是运用了链表常规的处理方法哑节点,中间第二层的while循环处理的巧妙,值得学习。