LeetCode/203. RemoveLinkListElements
Link
Summary
It is really confusing when you don’t know how Linked List works. I’ve been struggling with linked list many times. Need to understand what is pointing what.
Solutions
My Solution
public ListNode RemoveElements(ListNode head, int val)
{
var headPointer = head;
var result = new ListNode(0);
var previousPointer = result;
while (headPointer != null)
{
if (headPointer.val == val)
{
headPointer = headPointer.next;
previousPointer.next = headPointer;
continue;
}
previousPointer.next = headPointer;
previousPointer = previousPointer.next;
headPointer = headPointer.next;
}
return result.next;
}
Best Solution
Basically same as my solution but this is more simple and concise. I was doing extra actions on my solution because I didn’t fully understand linked list.
public ListNode RemoveElements(ListNode head, int val)
{
var headPointer = head;
var result = new ListNode(0);
var previousPointer = result;
while (headPointer != null)
{
if (headPointer.val == val)
{
previousPointer.next = headPointer.next;
}
else
{
previousPointer = previousPointer.next;
}
headPointer = headPointer.next;
}
return result.next;
}