剑指offer 56.删除有序链表中的重复结点
56. 删除有序链表中的重复结点 题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5 分析 借助辅助头结点,可避免单独讨论头结点的情况。设置两个结点 pre 和 cur,当 cur 和 cur.next 值相等,cur 一直向前走,直到不等退出循环,这时候 cur 指的值还是重复值,调整 cur 和 pre 的指针再次判断 /* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } } */ 1 public class Solution { 2 public ListNode deleteDuplication(ListNode pHead) 3 { 4 if(pHead == null || pHead.next == null){ 5 return pHead; 6 } 7 8 // 每访问一个结点,循环判断是否重复 9 ListNode cur = pHead; // 指向当前结点 10 // 创建一个辅助头结点,指向前一个元素的指针,方便删除 11 ListNode head = new ListNode