复杂度节点算法链表时间(节点链表复杂度末尾函数)「复杂度判定节点怎么看」

请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点
现有一个链表 -- head = [4,5,1,9],它可以表示为:示例 1:输入: head = [4,5,1,9], node = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.示例 2:输入: head = [4,5,1,9], node = 1输出: [4,5,9]解释: 给定你链表中值为 1 的第三个节点,那么在调用了你的函数之后,该链表应变为 4 -> 5 -> 9.说明:链表至少包含两个节点
链表中所有节点的值都是唯一的
给定的节点为非末尾节点并且一定是链表中的一个有效节点
不要从你的函数中返回任何结果
解决方案:与下一个节点交换
从链表里删除一个节点 node 的最常见方法是修改之前节点的 next 指针,使其指向之后的节点
因为,我们无法访问我们想要删除的节点 之前 的节点,我们始终不能修改该节点的 next 指针
相反,我们必须将想要删除的节点的值替换为它后面节点中的值,然后删除它之后的节点
因为我们知道要删除的节点不是列表的末尾,所以我们可以保证这种方法是可行的
public void deleteNode(ListNode node) {node.val = node.next.val;node.next = node.next.next;}复杂度分析:时间和空间复杂度都是:O(1)O(1)
复杂度节点算法链表时间(节点链表复杂度末尾函数)
(图片来源网络,侵删)

联系我们

在线咨询:点击这里给我发消息