题目:
输入一个链表,反转链表后,输出新链表的表头。
思路:
若只定义一个指针进行反转,则会造成链表断开。因此考虑使用多指针暂存后续节点,以防链表断开。同时此题也可以使用递归,利用递归从尾到头反转链表,
代码简洁,但是思路有点绕,需注意。
代码:
1 | // 递归 |
复杂度分析:
递归
时间复杂度:
O(n)。
空间复杂度:
O(n)。
双指针:
时间复杂度:
O(n)。
空间复杂度:
O(1)。
输入一个链表,反转链表后,输出新链表的表头。
若只定义一个指针进行反转,则会造成链表断开。因此考虑使用多指针暂存后续节点,以防链表断开。同时此题也可以使用递归,利用递归从尾到头反转链表,
代码简洁,但是思路有点绕,需注意。
1 | // 递归 |
时间复杂度:
O(n)。
空间复杂度:
O(n)。
时间复杂度:
O(n)。
空间复杂度:
O(1)。