删除给出链表中的重复元素(链表中元素从小到大有序),使链表中的所有元素都只出现一次
例:1→1→1→2→3, 返回 2→3
思路:
1,如果下一个节点和当前节点值相同,则删除下一个节点
删除步骤
1.1,当前节点的下一个为下一个节点的下一个
1.2,下一个节点指向当前节点的下一个
2,如果下一个节点和当前节点值不同,则都指向其下一个节点
代码
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { public ListNode deleteDuplicates(ListNode head) { if(head == null){ return null; } //如果下一个节点和当前节点值相同,则删除下一个节点 ListNode cur = head; ListNode next = head.next; while (next != null){ if(cur.val == next.val){ cur.next = next.next; next = cur.next; }else { cur = next; next = next.next; } } return head; } }