N

(Leet Code c++)Delete Node in a Linked List 본문

Leet Code 알고리즘

(Leet Code c++)Delete Node in a Linked List

naeunchan 2021. 7. 28. 09:57
728x90
반응형

237. Delete Node in a Linked List

 

Write a function to delete a node in a singly-linked list. You will not be given access to the head of the list, instead you will be given access to the node to be deleted directly.

It is guaranteed that the node to be deleted is not a tail node in the list.

 

Example 1:

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:

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.

Example 3:

Input: head = [1,2,3,4], node = 3 Output: [1,2,4]

Example 4:

Input: head = [0,1], node = 0 Output: [1]

Example 5:

Input: head = [-3,5,-99], node = -3 Output: [5,-99]

 

Constraints:

  • The number of the nodes in the given list is in the range [2, 1000].
  • -1000 <= Node.val <= 1000
  • The value of each node in the list is unique.
  • The node to be deleted is in the list and is not a tail node

연결 리스트의 head가 주어지지 않고, 지우려고 하는 노드의 정보만 주어진다.

그렇기 때문에 이전 노드의 next를 현재 노드의 다음 노드로 이을 방법이 없다.

하지만 현재 노드의 다음 노드를 현재 노드로 바꾼다면 가능하다.

/**
 * 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;
    }
};
728x90
반응형