链表:剑指 Offer 18. 删除链表的节点

题目描述:

给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。

返回删除后的链表的头节点。

 

 

 

 

 

复杂度分析:
  时间复杂度 O(N) : N 为链表长度,删除操作平均需循环 N/2 次,最差 N 次。
  空间复杂度 O(1) : cur, pre 占用常数大小额外空间。

class Solution{
    public ListNode deleteNode(ListNode head,int val){
        if(head.val==val) return head.next;
        ListNode pre = head,cur=head.next;
        while(cur!=null&&cur.val!=val){
            pre = cur;
            cur = cur.next;
        }
        if(cur!=null) pre.next = cur.next;
        return head;
    }
}

 

posted @ 2023-05-15 10:04  ZDREAMER  阅读(19)  评论(0)    收藏  举报