常见算法题——203.移除链表元素

简介: 【2月更文挑战第9天】

203.移除链表元素

题目

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

提示:

  • 列表中的节点数目在范围 [0, 104]
  • 1 <= Node.val <= 50
  • 0 <= val <= 50

思路

暴力解法

循环判断,与val相等,就移除操作,将节点next指针直接指向下下一个节点。

若删除的为头结点,那就将头结点向后移动一位就可以。

虚拟头结点解法

给链表添加一个虚拟头结点为新的头结点,如果删除的为头结点,就按照移除元素处理就行,无需其他特殊处理。

解法

暴力解法

代码示例:

class Solution {
    public ListNode removeElements(ListNode head, int val) {
        if (head == null) {
            return head;
        }
        while (head != null && head.val == val) {
            head = head.next;
        }
        ListNode currentNode = head;
        while (currentNode != null) {
            while (currentNode.next != null && currentNode.next.val == val) {
                currentNode.next = currentNode.next.next;
            }
            currentNode = currentNode.next;
        }
        return head;
    }
}
  • 时间复杂度: O(n)
  • 空间复杂度: O(1)

虚拟头结点解法

代码示例:

class Solution {
    public ListNode removeElements(ListNode head, int val) {
        if (head==null) {
            return head;
        }
        ListNode preHead=new ListNode(-1,head);
        ListNode preNode=preHead;
        ListNode nextNode=head;
        while (nextNode!=null) {
            if (nextNode.val==val) {
                preNode.next=nextNode.next;
            }else{
                preNode=nextNode;
            }
            nextNode=nextNode.next;
        }
        return preHead.next;
    }
}
  • 时间复杂度 O(n)
  • 空间复杂度 O(1)

目录
相关文章
|
6天前
|
算法
【C算法】链表算法
【C算法】链表算法
|
5天前
|
算法
【算法】二分查找——在排序数组中查找元素的第一个和最后一个位置
【算法】二分查找——在排序数组中查找元素的第一个和最后一个位置
|
5天前
|
程序员
【刷题记录】移除链表元素
【刷题记录】移除链表元素
|
3天前
|
存储 算法
LeetCode第83题删除排序链表中的重复元素
文章介绍了LeetCode第83题"删除排序链表中的重复元素"的解法,使用双指针技术在原链表上原地删除重复元素,提供了一种时间和空间效率都较高的解决方案。
LeetCode第83题删除排序链表中的重复元素
|
4天前
|
存储 C语言
【数据结构】c语言链表的创建插入、删除、查询、元素翻倍
【数据结构】c语言链表的创建插入、删除、查询、元素翻倍
【数据结构】c语言链表的创建插入、删除、查询、元素翻倍
|
5天前
|
算法
【算法】合并两个有序链表(easy)——递归算法
【算法】合并两个有序链表(easy)——递归算法
【算法】合并两个有序链表(easy)——递归算法
|
1月前
【数据结构OJ题】移除链表元素
力扣题目——移除链表元素
31 2
【数据结构OJ题】移除链表元素
|
3天前
|
算法
【数据结构与算法】共享双向链表
【数据结构与算法】共享双向链表
4 0
|
3天前
|
算法
【数据结构与算法】双向链表
【数据结构与算法】双向链表
4 0
|
3天前
|
算法
【数据结构与算法】循环链表
【数据结构与算法】循环链表
4 0