🍕🎉🥓🎊🚗🐷😱❤😀❣🥙🎇🕵️♀️😎🎑🎁🎉😚🎇
题目:
- 给你单链表的头节点
head
,请你反转链表,并返回反转后的链表。
示例:
- 输入: h e a d = [ 1 , 2 , 3 , 4 , 5 ] head = [1,2,3,4,5] head=[1,2,3,4,5]
- 输出: [ 5 , 4 , 3 , 2 , 1 ] [5,4,3,2,1] [5,4,3,2,1]
解题思路:
用pre
记录前一个元素,q
记录当前元素,temp
记录下一个元素。当前元素不为NULL
时,就将q
指向pre
,并更新指针,将pre
指向q
,将q
指向temp
。
版本二:C++
class Solution {
public:
ListNode* reverseList(ListNode* head) {
if(!head) return NULL;
auto pre = head, q = pre->next;
while(q){
auto temp = q->next;
q->next = pre;
pre = q;
q = temp;
}
head->next = NULL;
return pre;
}
};
时间复杂度:
O
(
n
)
O(n)
O(n)
空间复杂度:
O
(
1
)
O(1)
O(1)