题目描述
定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
示例:
输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL
限制:
0 <= 节点个数 <= 5000
解法
java
class Solution {
public ListNode reverseList(ListNode head) {
ListNode pre = null;
ListNode cur = head;
ListNode tmp = null;
while (cur != null) {
tmp = cur.next;
cur.next = pre;
pre = cur;
cur = tmp;
}
return pre;
}
}
Python
class Solution:
def reverseList(self, head: ListNode) -> ListNode:
cur = head
pre = None
tmp = None
while cur:
tmp = cur.next
cur.next = pre
pre = cur
cur = tmp
return pre
时间复杂度O(n) 需要遍历一遍链表
空间复杂度O(1)