zoukankan      html  css  js  c++  java
  • 剑指 Offer 18. 删除链表的节点

    1. 题目

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

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

    2. 示例

    示例1:

    输入: head = [4,5,1,9], val = 5
    输出: [4,1,9]
    解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.

    示例2:

    输入: head = [4,5,1,9], val = 1
    输出: [4,5,9]
    解释: 给定你链表中值为 1 的第三个节点,那么在调用了你的函数之后,该链表应变为 4 -> 5 -> 9.

    3. 题解

    本题是很简单的链表删除操作。

    步骤:

    1. 保存当前节点

    2. 判断下一个节点,若下一个节点是要删除的节点,让当前节点的后指针指向下一个节点的后一个节点。

    3. 若不是,继续遍历。

    4. 实现

     1 public ListNode deleteNode(ListNode head, int val) {
     2         // 判空
     3         if(head == null) return null;
     4         // 如果头节点等于要删除的值,输出下一个节点
     5         if(head.val == val) return head.next;
     6         // 定义输出头
     7         ListNode cur = head;
     8         // 遍历查找
     9         while(head.next != null) {
    10             // 下一个节点是要删除的节点
    11             if(head.next.val == val) {
    12                 // 当前节点指向下一个节点的后续节点,并结束遍历
    13                 head.next = head.next.next;
    14                 break;
    15             }
    16             // 继续遍历
    17             head = head.next;
    18         }
    19         return cur;
    20 }
    View Code

    5. 结语

      努力去爱周围的每一个人,付出,不一定有收获,但是不付出就一定没有收获! 给街头卖艺的人零钱,不和深夜还在摆摊的小贩讨价还价。愿我的博客对你有所帮助(*^▽^*)(*^▽^*)!

      如果客官喜欢小生的园子,记得关注小生哟,小生会持续更新(#^.^#)(#^.^#)。

    但行好事 莫问前程
  • 相关阅读:
    线性回归学习历程
    CART决策树的学习历程
    markdown测试
    开张大吉+代码测试
    使用tomcat启动dubbo项目
    ThreadLocal 工作原理、部分源码分析
    Dubbo项目demo搭建
    redis 操作 list 的测试
    redis 操作 hash 的测试
    redis 操作string 的测试
  • 原文地址:https://www.cnblogs.com/haifwu/p/14999747.html
Copyright © 2011-2022 走看看