Delete Node in a Linked List

Problem

Write a function to delete a node (except the tail) in a singly linked list, given only access to that node.

Supposed the linked list is 1 -> 2 -> 3 -> 4 and you are given the third node with value 3, the linked list should become 1 -> 2 -> 4 after calling your function.

Solution

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
public class Solution {
    public void deleteNode(ListNode node) {
        node.val = node.next.val;
        node.next = node.next.next;
    }
}

Analysis

We can only access to the deleted node
Therefore we delete the node by changing the val of it
Because the problem mentions it is not tail, node.next won't be null so the solution always works

Notice that we cannot just simply write the answer as node = node.next
Because the given node is just a parameter of method, it does not change the connection in linked list really

results matching ""

    No results matching ""