题目链接:https://leetcode-cn.com/problems/reverse-linked-list/
题目描述
反转一个单链表。
示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
进阶:
你可以迭代或递归地反转链表。你能否用两种方法解决这道题?
思路
1 迭代
复杂度分析
时间复杂度:O(n)
空间复杂度:O(1)
class Solution {
public:
ListNode* reverseList(ListNode* head) {
if(head == nullptr) return head;
ListNode *node = head;
ListNode *prev = nullptr;
while (node!= nullptr){
ListNode *pos = node->next;
node->next = prev;
prev = node;
node = pos;
}
return prev;
}
};
2 递归
复杂度分析
时间复杂度:O(n)
空间复杂度:O(n)