题目:在O(1)时间复杂度删除链表节点
样例:给定1->2->3->4,和节点3,删除3之后,链表应该变为1->2->4。
思路:将要删除的节点的下一个节点的属性复制到要删除的节点上,会出现两个属性完全相同的节点,然后把下一个节点删除即可。
代码:
class Solution {
public:
/**
* @param node: a node in the list should be deleted
* @return: nothing
*/
void deleteNode(ListNode *node) {
node->val = node->next->val;
node->next = node->next->next;
}
};
感想:这个题还是比较简单的,要在O(1)时间复杂度内完成删除,链表和要删除的节点都已知,所以操作起来比较简单,按照思路做一步复制然后删除一个重复的节点即可。