力扣由浅至深 每日一题.15 删除排序链表中的重复元素

没关系的,昨天的暴雨不会淋湿今天的自己

                                                —— 24.3.26

删除排序链表中的重复元素

给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。

示例 1:

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

示例 2:

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

提示:

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

一次遍历

思路与算法

        由于给定的链表是排好序的,因此重复的元素在链表中出现的位置是连续的,因此我们只需要对链表进行一次遍历,就可以删除重复的元素。

具体地,我们从指针 cur 指向链表的头节点,随后开始对链表进行遍历。如果当前 cur 与 cur.next 对应的元素相同,那么我们就将 cur.next 从链表中移除;否则说明链表中已经不存在其它与 cur 对应的元素相同的节点,因此可以将 cur 指向 cur.next

当遍历完整个链表之后,我们返回链表的头节点即可。

注:

        当我们遍历到链表的最后一个节点时,cur.next 为空节点,如果不加以判断,访问 cur.next 对应的元素会产生运行错误。因此我们只需要遍历到链表的最后一个节点,而不需要遍历完整个链表。

指定 cur 指针指向头部 head
当 cur 和 cur.next 的存在为循环结束条件,当二者有一个不存在时说明链表没有去重复的必要了
当 cur.val 和 cur.next.val 相等时说明需要去重,则将 cur 的下一个指针指向下一个的下一个,这样就能达到去重复的效果
如果不相等则 cur 移动到下一个位置继续循环
时间复杂度:O(n)

class Solution {
    public ListNode deleteDuplicates(ListNode head) {
                ListNode cur = head;
        while(cur != null && cur.next != null) {
            if(cur.val == cur.next.val) {
                cur.next = cur.next.next;   //跳过这个元素,用指针跳过删除元素
            } else {
                cur = cur.next;
            }
        }
        return head;
    }
}

相关推荐

  1. 每日.10 最后一个单词长度

    2024-03-26 14:38:06       18 阅读
  2. 每日.13 x平方根

    2024-03-26 14:38:06       17 阅读
  3. 每日.11

    2024-03-26 14:38:06       18 阅读
  4. 每日.12 二进制求和

    2024-03-26 14:38:06       18 阅读
  5. 每日.14 爬楼梯

    2024-03-26 14:38:06       16 阅读
  6. 每日.16 合并两个有序数组

    2024-03-26 14:38:06       19 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-26 14:38:06       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-26 14:38:06       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-26 14:38:06       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-26 14:38:06       18 阅读

热门阅读

  1. Qt源码分析:QMetaObject实现原理

    2024-03-26 14:38:06       19 阅读
  2. MongoDB 的索引有哪些 nestjs mongoose示例

    2024-03-26 14:38:06       16 阅读
  3. 在线数据格式工具

    2024-03-26 14:38:06       15 阅读
  4. 论文阅读--Offline RL Without Off-Policy Evaluation

    2024-03-26 14:38:06       14 阅读
  5. vue/js总结合集

    2024-03-26 14:38:06       16 阅读
  6. 面试算法-117-组合总和 III

    2024-03-26 14:38:06       13 阅读
  7. 缓存Caffine

    2024-03-26 14:38:06       19 阅读
  8. django关于文件分块上传的简单实现(template+view)

    2024-03-26 14:38:06       19 阅读
  9. Promise封装ajax

    2024-03-26 14:38:06       16 阅读