• 删除链表当中重复的节点


    public class 删除链表中重复的节点
    {
        // 遍历链表让当前节点的前一个节点与后面值大于当前节点相连接
        private static void deleteDuplication(ListNode pHead)
        {
            if (pHead == null)
            {
                return;
            }
            // 要删除的前一个节点
            ListNode preNode = null;
            // 当前节点
            ListNode curNode = pHead;
            while (curNode != null)
            {
                // 当前节点的下一个节点
                ListNode nextNode = curNode.next;
                // 需要进行删除
                if (nextNode != null && curNode.value == nextNode.value)
                {
                    // 当前节点的值
                    int curNodeValue = curNode.value;
                    // 需要进行删除的节点
                    ListNode toBeDeleteNode = curNode;
                    // 遍历找到大于需要删除节点的nextNode
                    while (toBeDeleteNode != null
                            && toBeDeleteNode.value == curNodeValue)
                    {
                        nextNode = toBeDeleteNode.next;
                        toBeDeleteNode = nextNode;
                    }
                    // 当删除的是头节点
                    if (preNode == null)
                    {
                        pHead = nextNode;
                    }
                    else
                    {
                        preNode.next = nextNode;
                    }
                    // 当前节点进行后移
                    curNode = nextNode;
                }
                else
                {// 不需要进行删除
                    preNode = curNode;
                    curNode = nextNode;
                }
            }
        }
    }

  • 相关阅读:
    第89题:格雷编码
    第88题:合并两个有序数组
    第86题:分隔链表
    第83题:删除排序链表中的重复元素
    第82题:删除排序链表中的重复元素II
    第81题:搜索旋转排序数组II
    redis笔记---不定时更新
    关于银行股
    开博客
    group by
  • 原文地址:https://www.cnblogs.com/qingtianBKY/p/8184594.html
Copyright © 2020-2023  润新知