Teaching Kids Programming: Videos on Data Structures and Algorithms
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 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
Delete Node in Linked List – by Shifting
We can shift node values and delete the last node:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | # 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. """ prev = None while node.next: node.val = node.next.val prev = node node = node.next prev.next = None del node |
# 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. """ prev = None while node.next: node.val = node.next.val prev = node node = node.next prev.next = None del node
This takes O(N) time.
Delete Node in Linked List – by Removing Next
We can make current node a copy of next node, and then remove next:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | # 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. """ nxt = node.next node.val = nxt.val node.next = nxt.next del nxt |
# 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. """ nxt = node.next node.val = nxt.val node.next = nxt.next del nxt
This takes O(1) constant time.
–EOF (The Ultimate Computing & Technology Blog) —
loading...
Last Post: BASH Function to Get Memory Information via AWK
Next Post: BASH Function to Error Warnings and Messages with Terminal Colours