From 30b5ba4390d10223b09848350de303f85a4730f5 Mon Sep 17 00:00:00 2001 From: crupest Date: Wed, 5 Aug 2020 16:25:29 +0800 Subject: Add problem 203 . --- cpp/203.cpp | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 cpp/203.cpp (limited to 'cpp') diff --git a/cpp/203.cpp b/cpp/203.cpp new file mode 100644 index 0000000..0f1bb55 --- /dev/null +++ b/cpp/203.cpp @@ -0,0 +1,48 @@ +#include + +struct ListNode +{ + int val; + ListNode *next; + ListNode(int x) : val(x), next(NULL) {} +}; + +class Solution +{ +public: + ListNode *removeElements(ListNode *head, int val) + { + if (head == NULL) + return NULL; + + ListNode *last = NULL; + ListNode *current = head; + + while (current != NULL) + { + if (current->val == val) + { + if (last == NULL) + { + auto temp = current; + current = current->next; + head = current; + delete temp; + } + else + { + auto temp = current; + current = current->next; + last->next = current; + delete temp; + } + } + else + { + last = current; + current = current->next; + } + } + return head; + } +}; -- cgit v1.2.3