Open songyy5517 opened 1 year ago
思路:双指针
复杂度分析
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode deleteNode(ListNode head, int val) {
// 0. 处理异常情况
if (head == null)
return null;
// 1. 定位节点并删除
ListNode pre = head;
ListNode cur = head.next;
// 特殊情况合并:待删节点位于链表首部 && 仅一个节点
if (head.val == val)
return head.next;
// 一般情况
while(cur != null){
// 1.1 找到目标节点并删除
if (cur.val == val){
pre.next = cur.next;
cur.next = null;
return head;
}
// 1.2 移至下一个节点
pre = pre.next;
cur = cur.next;
}
return head;
}
}
2023/1/30 2024/1/11
给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。
返回删除后的链表的头节点。
注意: 此题对比原题有改动
示例 1:
示例 2:
说明: