Untitled

mail@pastecode.io avatarunknown
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;
}