Skip to content

Commit 1a6a72c

Browse files
authored
Create 2487. Remove Nodes From Linked List (#472)
2 parents 81e1e53 + 397f736 commit 1a6a72c

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed

2487. Remove Nodes From Linked List

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
/**
2+
* Definition for singly-linked list.
3+
* struct ListNode {
4+
* int val;
5+
* ListNode *next;
6+
* ListNode() : val(0), next(nullptr) {}
7+
* ListNode(int x) : val(x), next(nullptr) {}
8+
* ListNode(int x, ListNode *next) : val(x), next(next) {}
9+
* };
10+
*/
11+
class Solution {
12+
public:
13+
ListNode* removeNodes(ListNode* head) {
14+
if(head->next == nullptr) {
15+
return head;
16+
}
17+
ListNode* prevNode = head;
18+
ListNode* currentNode = head->next;
19+
20+
while(currentNode != nullptr) {
21+
ListNode* nextNode = currentNode->next;
22+
currentNode->next = prevNode;
23+
prevNode = currentNode;
24+
currentNode = nextNode;
25+
}
26+
head->next = nullptr;
27+
head = prevNode;
28+
29+
prevNode = head;
30+
currentNode = head->next;
31+
while(currentNode != nullptr) {
32+
if(currentNode->val < prevNode->val) {
33+
currentNode = currentNode->next;
34+
} else {
35+
ListNode* nextNode = currentNode->next;
36+
currentNode->next = prevNode;
37+
prevNode = currentNode;
38+
currentNode = nextNode;
39+
}
40+
}
41+
head->next = nullptr;
42+
head = prevNode;
43+
return head;
44+
}
45+
};

0 commit comments

Comments
 (0)