1. 题目来源
题单:
-
- 链表、二叉树与一般树(前后指针/快慢指针/DFS/BFS/直径/LCA)
- §1.2 删除节点
2. 题目解析
本题在我 21年 校招的时候好像还出现过哈哈,不过当时是口述的题目要求。算是一个脑筋急转弯问题吧
思路:
- 如果仅知道当前节点,并想删除当前节点的话。对单链表来说,可以将下一个节点的状态拷贝到当前节点。然后将下一个节点删除即可。
- 时间复杂度: O ( 1 ) O(1) O(1)
- 空间复杂度: O ( 1 ) O(1) O(1)
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
void deleteNode(ListNode* node) {
node->val = node->next->val;
node->next = node->next->next;
}
};