剑指offer上的题目,值得记录一下。
给定链表节点head和需要删除的节点dNode,要求是O(1)的时间复杂度。
常规的做法是从头结点开始寻找dNod的前驱,但是这样的时间复杂度是O(n)
O(1)的方法是,把下一个节点的内容拷贝到当前节点,然后删除下一个节点。
但是有这么几个缺点:
1、如果节点的内容过于庞大,拷贝数据的时间比查找的时间更大。
2、如果有指向下一个节点的指针,会造成野指针的问题,程序崩溃!
剑指offer上的题目,值得记录一下。
给定链表节点head和需要删除的节点dNode,要求是O(1)的时间复杂度。
常规的做法是从头结点开始寻找dNod的前驱,但是这样的时间复杂度是O(n)
O(1)的方法是,把下一个节点的内容拷贝到当前节点,然后删除下一个节点。
但是有这么几个缺点:
1、如果节点的内容过于庞大,拷贝数据的时间比查找的时间更大。
2、如果有指向下一个节点的指针,会造成野指针的问题,程序崩溃!