通过率 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 };