剑指Offer_56 发表于 2017-12-05 | 分类于 剑指Offer 题目在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5 解题思路123456789101112131415161718192021222324252627282930313233343536373839404142/* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Solution { public ListNode deleteDuplication(ListNode pHead) { if(pHead == null){ return null; } ListNode header = new ListNode(-1); header.next = pHead; ListNode pre = header; ListNode cur = pHead; while(cur != null){ //拥有cur.val相同节点值的最后一个 while(cur.next != null && cur.val == cur.next.val){ cur = cur.next; } //cur不出现重复值的情况,更新pre为cur if(pre.next == cur){ pre = cur; } //所有的cur节点都要被删除,不用更新pre节点 else{ pre.next = cur.next; } //更新完pre,更新cur cur = cur.next; } return header.next; }}