【百日算法计划】:每日一题,见证成长(007)

题目

移除链表元素

给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点

示例:

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

输出:[1,2,3,4,5]

思路1

不引入虚拟头节点 (需要对头节点特殊处理)

java 复制代码
 public ListNode removeElements1(ListNode head, int val) {
    if (head == null) return null;
    ListNode prev = head;
    while (prev.next != null){
        if (prev.next.val == val){
            prev.next = prev.next.next; //注意这个时候prev不需要后移
        } else {
            prev = prev.next;
        }
    }
    //因为是从prev.next开始判断的,所以第一个节点没有判断到,需要特殊处理
    if (head.val == val){
        head = head.next;
    }
    return head;
}

思路2

引入虚拟头节点

java 复制代码
public ListNode removeElements2(ListNode head, int val) {
   ListNode host = new ListNode();//创建一个虚拟头节点
   host.next = head;
   ListNode pre = host;
   while (pre.next != null){
       if (pre.next.val == val){
           pre.next = pre.next.next;
       } else {
           pre = pre.next;
       }
   }
   return host.next;
}

思路3

引入一个新的结果链表,利用tail指针尾插

java 复制代码
public ListNode removeElements3(ListNode head, int val) {
    ListNode host = new ListNode();//创建一个虚拟头节点
    ListNode tail = host; //tail指针
    ListNode p = head;
    while (p != null){
        ListNode temp = p.next;
        if (p.val != val){
            p.next = null;
            tail.next = p;
            tail = p;
        }
        p = temp.next;
    }
    return host.next;
}
相关推荐
报错小能手16 分钟前
C++笔记(面向对象)静态联编和动态联编
开发语言·c++·算法
WBluuue23 分钟前
AtCoder Beginner Contest 430(ABCDEF)
c++·算法
小肖爱笑不爱笑25 分钟前
2025/11/5 IO流(字节流、字符流、字节缓冲流、字符缓冲流) 计算机存储规则(ASCII、GBK、Unicode)
java·开发语言·算法
熬了夜的程序员41 分钟前
【LeetCode】99. 恢复二叉搜索树
算法·leetcode·职场和发展
Kent_J_Truman1 小时前
LeetCode Hot100 自用
算法·leetcode·职场和发展
还是码字踏实1 小时前
算法题种类与解题思路全面指南:基于LeetCode Hot 100与牛客Top 101
算法·leetcode
Victory_orsh2 小时前
“自然搞懂”深度学习(基于Pytorch架构)——010203
人工智能·pytorch·python·深度学习·神经网络·算法·机器学习
CoovallyAIHub2 小时前
突破360°跟踪极限!OmniTrack++:全景MOT新范式,HOTA指标狂飙43%
深度学习·算法·计算机视觉
得物技术2 小时前
得物管理类目配置线上化:从业务痛点到技术实现
后端·算法·数据分析
CoovallyAIHub3 小时前
首个大规模、跨模态医学影像编辑数据集,Med-Banana-50K数据集专为医学AI打造(附数据集地址)
深度学习·算法·计算机视觉