剑指 Offer 18. 删除链表的节点(简单)

时间:2021-08-29
本文章向大家介绍剑指 Offer 18. 删除链表的节点(简单),主要包括剑指 Offer 18. 删除链表的节点(简单)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

通过率 59.5%

题目链接

题目描述:

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

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

注意:此题对比原题有改动

示例 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.

说明:

题目保证链表中节点的值互不相同
若使用 C 或 C++ 语言,你不需要 free 或 delete 被删除的节点

思路:

先判断头节点是否为要删除的节点,若是,则直接返回head.next;否则,遍历链表找到要删除的节点,一旦找到某个节点的值等于val,说明该节点就是要删除的节点,则令该节点前一个节点的next指向该节点的next就行了

 1 /*JavaScript*/
 2 /**
 3  * Definition for singly-linked list.
 4  * function ListNode(val) {
 5  *     this.val = val;
 6  *     this.next = null;
 7  * }
 8  */
 9 /**
10  * @param {ListNode} head
11  * @param {number} val
12  * @return {ListNode}
13  */
14 var deleteNode = function(head, val) {
15     if(head.val === val) {
16         return head.next
17     }
18     let p = head
19     while(p.next && p.next.val !== val) {
20         p = p.next
21     }
22     p.next = p.next.next
23     return head
24 };

原文地址:https://www.cnblogs.com/wwqzbl/p/15203400.html