剑指offer-57:删除链表中重复节点
2017-04-18 09:24
405 查看
思路
需要新建一个头指针header, prev = header; nHead = pHead,以防链表第一个元素重复;遍历链表当前值与next指针的值,若相同则循环直至不同,令prev.next指向当前指针的下一个;
反之若值不相同,prev.next指向该值,更新prev;
判断结束后,nHead = nHead.next
代码
public ListNode deleteDuplication(ListNode pHead) { ListNode header = new ListNode(-1); header.next = pHead; ListNode prev = header, nHead = pHead; while(nHead != null && nHead.next != null){ if(nHead.val == nHead.next.val){ while(nHead.next != null && nHead.next.val == nHead.val){ nHead = nHead.next; } prev.next = nHead.next; // 不要移动到下一个节点,因为有可能prev.next也是重复节点;如例子中4 // prev = prev.next; }else{ prev.next = nHead; prev = prev.next; } nHead = nHead.next; } return header.next; }
相关文章推荐
- 【剑指offer-解题系列(57)】删除链表中重复的节点
- 剑指offer 57 - 删除链表中重复的节点
- 【剑指offer】题57:删除链表中的重复的结点
- 8.剑指offer-删除链表中重复节点
- 剑指offer 面试题57 删除链表中重复的结点
- 剑指offer面试题[57]-删除链表中重复的结点
- 【剑指Offer学习】【面试题57:删除链表中重复的结点】
- 剑指offer57 删除链表中重复的结点
- 剑指offer-删除链表重复节点
- 剑指offer之删除链表中重复的节点
- 剑指offer面试题57 删除链表中重复的结点
- 剑指Offer—56—删除链表中重复的节点
- 剑指Offer--删除链表中重复的节点
- 剑指offer(LintCode):112. 删除链表中重复节点I VS 113.删除链表中重复节点II
- 剑指Offer面试题57:删除重复链表 Java实现
- 剑指offer_删除链表中重复的节点
- 【剑指Offer】面试题57:删除链表中重复的结点
- 【剑指Offer】面试题57:删除链表中重复的结点
- 【剑指offer】面试题18:删除链表中重复的节点
- LintCode-剑指Offer-(112)删除排序链表中的重复元素