237. Delete Node in a Linked List

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.

思路:因为只给了当前结点(except the tail),只能替换成下一个结点的值再delete掉下一个。
1a: direct deletion
1b: with garbage collection

Time Complexity: O(1) Space Complexity: O(1)

Solution1a Code:

class Solution {
    public void deleteNode(ListNode node) {
        node.val = node.next.val;
        node.next = node.next.next;
    }
}

Solution1b Code:

class Solution {
    public void deleteNode(ListNode node) {
        ListNode save_next = node.next.next;
        node.val = node.next.val;
        node.next = null;
        node.next = save_next;
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容