链表:剑指 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 @   ZDREAMER  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示