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;
        }
    
  • 相关阅读:
    MySQL 连接 触发器 函数 视图 存储过程
    Django的ORM2
    nmp安装vuejs
    Docker 技术入门与实践(第3版)笔记
    docker官方 入门
    centos 各目录介绍
    阿里云es 安装docker
    linux命令
    centos 7 mini 安装青岛OJ
    leetcode_304. 二维区域和检索
  • 原文地址:https://www.cnblogs.com/xym4869/p/12367412.html
Copyright © 2011-2022 走看看