Skip to content

Instantly share code, notes, and snippets.

@claytonjwong
Created December 22, 2021 15:24
Show Gist options
  • Save claytonjwong/36ad8d3a6f9e93ba2216807058736672 to your computer and use it in GitHub Desktop.
Save claytonjwong/36ad8d3a6f9e93ba2216807058736672 to your computer and use it in GitHub Desktop.
reverse linked list
//
// Recursively change each node of the linked list such that next
// is the last node seen during a linear scan of the linked list.
//
class Solution {
public:
using fun = function<ListNode*(ListNode*, ListNode*)>;
ListNode* reverseList(ListNode* head) {
fun go = [&](auto node, auto last) {
auto next = node->next;
node->next = last;
if (!next)
return node;
return go(next, node);
};
return head ? go(head, nullptr) : nullptr;
}
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment