Monday, February 5, 2018

[2018-Interview] Delete Node in a Linked List

Original question: https://leetcode.com/problems/delete-node-in-a-linked-list/description/

My answer: too stupid. LOL


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

Better solution:


public class Solution {
    /**
     * @param node: the node in the list should be deleted
     * @return: nothing
     */
    public void deleteNode(ListNode node) {
        // write your code here
        if (node == null || node.next == null)
            return;
        ListNode next = node.next;
        node.val = next.val;
        node.next = next.next;
        return;
    }
}

No comments:

Post a Comment