算法思想,首先有一个循环的链表节点,如果当前节点的值和后面节点的值一样的话,就把当前节点的next指向下下一个节点,(这一步的做法,不会漏掉只比较相邻节点,这个算法巧妙点在于判断当前节点和下一个节点是否一样,一样的话,将当前节点的下一个节点指向下下一个节点)否则的话,就链表后移
/**
* 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 move = head;
while(move!=null &&move.next!=null){
//移动move
if(move.val == move.next.val){
move.next = move.next.next;
}else{
//走正常的循环
move = move.next;
}
}
return head;
}
}