美文网首页数据结构和算法
链表 - LeetCode 203. 移除链表元素

链表 - LeetCode 203. 移除链表元素

作者: 我阿郑 | 来源:发表于2023-10-29 14:16 被阅读0次

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

class Solution {
    public ListNode removeElements(ListNode head, int val) {
        ListNode dummyHead = new ListNode(0);
        dummyHead.next = head;
        ListNode temp = dummyHead;
        while (temp.next != null) {
            if (temp.next.val == val) {
                temp.next = temp.next.next;
            } else {
                temp = temp.next;
            }
        }
        return dummyHead.next;
    }
}
  • 链表的头节点 head 也有可能被删除,因此创建哑节点dummyHead,令dummyHead.next=head
  • 初始化一个temp节点:temp=dummyHead,temp的目的用来遍历链表,并进行删除操作。
  • 最终返回 dummyHead.next 即为删除操作后的头节点。

temp表示当前节点。如果temp.next不为空且temp.next.val == val时,则要删除tempnext节点,实现:

temp.next=temp.next.next
image.png
  • 时间复杂度:O(n),其中 n 是链表的长度。需要遍历链表一次。
  • 空间复杂度:O(1)。

相关文章

网友评论

    本文标题:链表 - LeetCode 203. 移除链表元素

    本文链接:https://www.haomeiwen.com/subject/iohvidtx.html