# LC 237. Delete Node in a Linked List ### [Problem link](https://leetcode.com/problems/delete-node-in-a-linked-list/) ###### tags: `leedcode` `python` `c++` `medium` `Linked List` There is a singly-linked list <code>head</code> and we want to delete a node <code>node</code> in it. You are given the node to be deleted <code>node</code>. You will **not be given access** to the first node of <code>head</code>. All the values of the linked list are **unique** , and it is guaranteed that the given node <code>node</code> is not the last node in the linked list. Delete the given node. Note that by deleting the node, we do not mean removing it from memory. We mean: - The value of the given node should not exist in the linked list. - The number of nodes in the linked list should decrease by one. - All the values before <code>node</code> should be in the same order. - All the values after <code>node</code> should be in the same order. **Custom testing:** - For the input, you should provide the entire linked list <code>head</code> and the node to be given <code>node</code>. <code>node</code> should not be the last node of the list and should be an actual node in the list. - We will build the linked list and pass the node to your function. - The output will be the entire list after calling your function. **Example 1:** <img alt="" src="https://assets.leetcode.com/uploads/2020/09/01/node1.jpg" style="width: 400px; height: 286px;" /> ``` Input: head = [4,5,1,9], node = 5 Output: [4,1,9] Explanation: You are given the second node with value 5, the linked list should become 4 -> 1 -> 9 after calling your function. ``` **Example 2:** <img alt="" src="https://assets.leetcode.com/uploads/2020/09/01/node2.jpg" style="width: 400px; height: 315px;" /> ``` Input: head = [4,5,1,9], node = 1 Output: [4,5,9] Explanation: You are given the third node with value 1, the linked list should become 4 -> 5 -> 9 after calling your function. ``` **Constraints:** - The number of the nodes in the given list is in the range <code>[2, 1000]</code>. - <code>-1000 <= Node.val <= 1000</code> - The value of each node in the list is **unique** . - The <code>node</code> to be deleted is **in the list** and is **not a tail** node. ## Solution 1 - Linked List #### Python ```python= # Definition for singly-linked list. # class ListNode: # def __init__(self, x): # self.val = x # self.next = None class Solution: def deleteNode(self, node): """ :type node: ListNode :rtype: void Do not return anything, modify node in-place instead. """ node.val = node.next.val node.next = node.next.next ``` #### C++ ```cpp= /** * 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; } }; ``` >### Complexity >| | Time Complexity | Space Complexity | >| ----------- | --------------- | ---------------- | >| Solution 1 | O(1) | O(1) | ## Note 直接換值