Untitled
unknown
c_cpp
2 years ago
960 B
10
Indexable
SinglyLinkedListNode* findLongestList(SinglyLinkedListNode* head) {
SinglyLinkedListNode* curSublistHead = head;
SinglyLinkedListNode* longestHead = head;
int longest = (head == nullptr) ? 0 : 1;
int curSublistLen = longest;
while (head->next != nullptr) {
if (head->data >= head->next->data) {
++curSublistLen;
} else {
if (longest < curSublistLen) {
longest = curSublistLen;
longestHead = curSublistHead;
}
curSublistLen = 1;
curSublistHead = head->next;
}
head = head->next;
}
if (longest < curSublistLen) {
longestHead = curSublistHead;
longest = curSublistLen;
}
SinglyLinkedListNode* newHead = longestHead;
for (int i = 1; i < longest; ++i) {
newHead = newHead->next;
}
newHead->next = nullptr;
return longestHead;
}
Editor is loading...