leetcode 206 Reverse linked list

Will not.

 

recursive. A bit slow, 18ms.

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        
        if(head==NULL||head->next==NULL){
            return head;
        }
        
        ListNode * p=reverseList(head->next);
        head->next->next=head;
        head->next=NULL;
        return p;
        
            
    }
};

Source: https://blog.csdn.net/geekmanong/article/details/51097196

 

ListNode* reverseList(ListNode* head) {
    ListNode* newHead = NULL;
    while (head) {
        ListNode* nextNode = head->next;
        head->next = newHead;
        newHead = head;
        head = nextNode;
    }
    return newHead;
}

9ms, from: https://blog.csdn.net/NoMasp/article/details/50514593

 Twice as fast?

 

 

class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        if (head == nullptr) {
            return nullptr;
        }
        
        ListNode *pre = nullptr, *next = nullptr;
        
        while (head != nullptr) {
            next = head->next;
            head->next = pre;
            pre  = head;
            head = next;
        }
        
        return pre;
    }
};

fastest. 7ms?

 

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325014837&siteId=291194637