LeetCode 82:删除排序链表中的重复元素 II

一、题目描述

给定一个已排序的链表的头 head , 删除原始链表中所有重复数字的节点,只留下不同的数字 。返回 已排序的链表 。

示例 1:

输入:head = [1,2,3,3,4,4,5]
输出:[1,2,5]

示例 2:

输入:head = [1,1,1,2,3]
输出:[2,3]

提示:

  • 链表中节点数目在范围 [0, 300] 内
  • -100 <= Node.val <= 100
  • 题目数据保证链表已经按升序 排列

二、思路分析

三、代码参考

1、Java

class Solution {
    public ListNode deleteDuplicates(ListNode head) {
        // 创建虚拟节点,便于最后返回结果
        ListNode preNode = new ListNode(0, head);
        // 创建节点,用于遍历循环
        ListNode currentNode = preNode;
        // 循环链表,只要当前访问节点的下一个节点与下下个节点都存在,才继续访问
        while(currentNode.next != null && currentNode.next.next != null){
            // 判断前一个节点与后一个节点是否相同
            if(currentNode.next.val == currentNode.next.next.val){
                // 如果相同,就将值记录下来
                int value = currentNode.next.val;
                // 利用 while 循环,不断的查找出那些相同的节点值来
                while(currentNode.next != null && currentNode.next.val == value){
                    // 遇到相同的值,把它删除掉,即跳过这个节点
                    currentNode.next = currentNode.next.next;
                }
            }
            // 如果不相等,则 currentNode 向后移动
            else {
                currentNode = currentNode.next;
            }
        }
        // 最后返回结果
        return preNode.next;
    }
}

2、Python

class Solution(object):
    def deleteDuplicates(self, head):
        # 创建虚拟节点,便于最后返回结果
        preNode = ListNode(0,head)
        # 创建节点,用于遍历循环
        currentNode = preNode
        # 循环链表,只要当前访问节点的下一个节点与下下个节点都存在,才继续访问
        while currentNode.next and currentNode.next.next :
            # 判断前一个节点与后一个节点是否相同
            if currentNode.next.val == currentNode.next.next.val :
                # 如果相同,就将值记录下来
                value = currentNode.next.val
                # 利用 while 循环,不断的查找出那些相同的节点值来
                while currentNode.next and currentNode.next.val == value :
                    # 遇到相同的值,把它删除掉,即跳过这个节点
                    currentNode.next = currentNode.next.next
            else :
                # 如果不相等,则 currentNode 向后移动
                currentNode = currentNode.next
        # 最后返回结果
        return preNode.next

相关推荐

  1. 82. 删除排序重复元素 II

    2024-01-06 19:30:04       15 阅读
  2. LeetCode——82. 删除排序重复元素II

    2024-01-06 19:30:04       32 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-06 19:30:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-06 19:30:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-06 19:30:04       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-06 19:30:04       20 阅读

热门阅读

  1. MySQL-DML

    2024-01-06 19:30:04       33 阅读
  2. 阿里云Alibaba Cloud Linux 3镜像版本清单2024更新

    2024-01-06 19:30:04       50 阅读
  3. SqlServer内存使用情况

    2024-01-06 19:30:04       40 阅读
  4. Android11 Framework Vendor下自定义系统服务

    2024-01-06 19:30:04       44 阅读
  5. C++ 重载与重写

    2024-01-06 19:30:04       44 阅读
  6. 【Databend】数据类型

    2024-01-06 19:30:04       51 阅读
  7. Ubuntun使用ISO镜像中的软件包作为本地镜像源

    2024-01-06 19:30:04       44 阅读
  8. MidTool的Midjourney:将AI创作的艺术转化为NFT

    2024-01-06 19:30:04       40 阅读
  9. vue接入高德地图

    2024-01-06 19:30:04       43 阅读