Untitled
c_cpp
a month ago
960 B
2
Indexable
Never
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; }