# [206\. Reverse Linked List](https://leetcode.com/problems/reverse-linked-list/) :::spoiler Solution - Iteration ```cpp= /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x), next(next) {} * }; */ class Solution { public: ListNode* reverseList(ListNode* head) { ListNode* cur = head; ListNode* prev = nullptr; while(cur) { ListNode* temp = cur->next; cur->next = prev; prev = cur; cur = temp; } return prev; } }; ``` - T: $O(N)$ - S: $O(1)$ ::: :::spoiler Solution - Recursion ```cpp= /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x), next(next) {} * }; */ class Solution { public: ListNode* reverseList(ListNode* head) { if(!head || !head->next) return head; ListNode* prev = reverseList(head->next); // 1 -> 2 <- 3 <- 4 <- 5 // ^ head head->next->next = head; head->next = NULL; return prev; } }; ``` - T: $O(N)$ - S: $O(N)$ :::
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up