In this Leetcode Remove Linked List Elements problem solution we have Given the head of a linked list and an integer val, remove all the nodes of the linked list that has Node.val == val, and return the new head.
Problem solution in Python.
class Solution: def removeElements(self, head: ListNode, val: int) -> ListNode: arr = [] newList = head newListHead = head while head != None: if head.val != val: arr.append(head.val) head = head.next for i in range(len(arr)): newList.val = arr[i] if(i == len(arr) - 1): newList.next = None else: newList = newList.next if len(arr) == 0: newListHead = None return newListHead
Problem solution in Java.
public ListNode removeElements(ListNode head, int val) { if (head == null) return null; ListNode curr = head; ListNode prev = null; while (curr != null) { if (curr.val == val) { if (prev != null) prev.next = curr.next; else head = head.next; } else { prev = curr; } curr = curr.next; } return head; }
Problem solution in C++.
class Solution { public: Solution(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); } ListNode* removeElements(ListNode* head, int val) { while((head != nullptr) && (head->val == val)) head = head->next; ListNode *temp = head; while(temp != nullptr){ ListNode *next = temp->next; while((next != nullptr) && (next->val == val)){ temp->next = next->next; next = next->next; } temp = temp->next; } return head; } };
Problem solution in C.
struct ListNode* removeElements(struct ListNode* head, int val) { struct ListNode **pp, *p; pp = &head; while (*pp) { p = *pp; if ((*pp)->val == val) { /* found one */ *pp = p->next; free(p); } else pp = &p->next; } return head; }
0 Comments