剑指offer---删除链表中的重复元素

来源:互联网 发布:微医挂号网可靠吗 知乎 编辑:程序博客网 时间:2024/06/05 11:32

在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5

解题思路:使用O(1)的覆盖的删除方式,进行覆盖式删除

java

/* 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 || pHead.next == null) {            return pHead;        }        ListNode dummy = new ListNode(-1);        dummy.next = pHead;        ListNode prev = dummy;        ListNode curr = pHead;        while (curr != null && curr.next != null) {            if (curr.val == curr.next.val) {                int val = curr.val;                while (curr != null && curr.val == val) {                    curr = curr.next;                }                prev.next = curr;            } else {                prev = curr;                curr = curr.next;            }        }        return dummy.next;    }}


原创粉丝点击