zoukankan      html  css  js  c++  java
  • 剑指offer系列——56.删除链表中重复的结点

    Q:在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5
    A:题目并不难,重要的是,可以在head前添加一个头结点,防止head被删的情况。

       ListNode *deleteDuplication(ListNode *pHead) {
            if (pHead == nullptr || pHead->next == nullptr)
                return pHead;
            ListNode *node = new ListNode(0);
            node->next = pHead;
            pHead = node;
            ListNode *temp = pHead;
            while (node->next != nullptr) {
                if (node->val == node->next->val) {
                    while (temp->next != node)
                        temp = temp->next;
                    while (node->next != nullptr && node->val == node->next->val)
                        node = node->next;
                    temp->next = node->next;
                    node->next = nullptr;
                    node = temp->next;
                } else {
                    node = node->next;
                }
            }
            return pHead->next;
        }
    

    Q:给出一个排好序的链表,删除链表中的所有重复出现的元素,只保留原链表中只出现一次的元素。
    例如:
    给出的链表为1->2->3->3->4->4->5, 返回1->2->5.
    给出的链表为1->1->1->2->3, 返回2->3.
    A:

    public static ListNode deleteDuplicates(ListNode head) {
            if (head == null || head.next == null)
                return head;
            ListNode newHead = new ListNode(Integer.MIN_VALUE);
            newHead.next = head;
            ListNode cur = head;
            ListNode last = newHead;
            while (cur != null && cur.next != null) {
                if (cur.val != cur.next.val) {
                    last = cur;
                } else {
                    while (cur.next != null && cur.val == cur.next.val)
                        cur = cur.next;
                    last.next = cur.next;
                }
                cur = cur.next;
            }
            return newHead.next;
        }
    
  • 相关阅读:
    logging模块,序列化,range模块
    生成器以及推导式
    递归,自定义模块,time模块,datetime
    装饰器,内置函数
    函数名的使用以及第一类对象,闭包,迭代器
    python文件操作
    面向对象
    os sys hashlib
    文件操作
    logging模块
  • 原文地址:https://www.cnblogs.com/xym4869/p/12367412.html
Copyright © 2011-2022 走看看