Friday, December 28, 2018

[LeetCode]Delete Node in a Linked List

这道题让我们在singly linkedlist里删除节点,但是只给我们要删除的节点,连链表的头结点都不给。显然是没有办法从头遍历然后删除的,那么一个思路就是把当前节点的value和下一个节点交换,然后删除下一个节点,这个方法当给定节点是链表最后一个节点的时候是没有办法用的。但是题目保证了给定节点不会是最后一个节点,所以没有问题。常数时间和空间,代码如下:

/**
* 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;
auto tmp = node->next;
node->next = tmp->next;
tmp->next = nullptr;
}
};

No comments:

Post a Comment