您的位置:首页 > 其它

在O(1)时间复杂度删除链表节点

2016-04-14 22:38 519 查看
给定一个单链表中的表头和一个等待被删除的节点(非表头或表尾)。

请在在O(1)时间复杂度删除该链表节点。并在删除该节点后,返回表头。

/**
* Definition of ListNode
* class ListNode {
* public:
*     int val;
*     ListNode *next;
*     ListNode(int val) {
*         this->val = val;
*         this->next = NULL;
*     }
* }
*/
class Solution {
public:
/**
* @param node: a node in the list should be deleted
* @return: nothing
*/
void deleteNode(ListNode *node) {
// write your code here
ListNode* p = node->next;//找出给定节点的下一个节点,复制到node节点
node->val = p->val;     //删除p节点。O(1)时间复杂度
node->next = p->next;
delete p;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: