数据结构—线性结构—链表:(在O(1)时间复杂度删除链表节点)
一、题目:
给定一个单链表中的一个等待被删除的节点(非表头或表尾)。请在在O(1)时间复杂度删除该链表节点。
样例:Linked list is
1->2->3->4, and given node 3, delete the node in place 1->2->4二、分析:
需要考虑的点:
1、时间复杂度为O(1);
2、删除的是非首尾节点;
3、令当前节点值等于下一个节点值,删除下一个节点;
三、代码:
/**
* Definition for ListNode.
*/
public class ListNode {
int val;
ListNode next;
ListNode(int val) {
this.val = val;
this.next = null;
}
}
public class Solution {
/*
* @param node: the node in the list should be deletedt
* @return: nothing
*/
public void deleteNode(ListNode node) {
// write your code here
node.val = node.next.val;
node.next = node.next.next;
}
}

本文介绍了一种在O(1)时间复杂度下删除单链表中指定节点的方法,该方法适用于非首尾节点。通过将待删节点的值替换为下一个节点的值,并调整指针指向,实现快速删除。
615

被折叠的 条评论
为什么被折叠?



