LeetCode 206. 反转链表 思考分析
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 206. 反转链表 思考分析
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目
反轉一個單鏈表。
示例:
輸入: 1->2->3->4->5->NULL
輸出: 5->4->3->2->1->NULL
進階:
你可以迭代或遞歸地反轉鏈表。你能否用兩種方法解決這道題?
迭代+雙指針
從某公眾號(代碼隨想錄)搬過來的gif圖:看了能很好地理解轉置的過程
遞歸解
遞歸思路:
遞歸動態圖:
主要思路:
head 的下一個節點指向head
具體實現步驟過程見:
https://leetcode-cn.com/problems/reverse-linked-list/solution/dong-hua-yan-shi-206-fan-zhuan-lian-biao-by-user74/
遞歸模板;
class Solution { public:ListNode* reverseList(ListNode* head) {//終止條件://終止條件是當前節點或者下一個節點==null//終止條件為何是這個?第一個head是null,防止一開始傳入的就是空指針//若一開始傳入的就是空指針,則會返回空指針//若一開始傳入的是head+null,則會直接返回head//若一開始傳入的是head+node2+...+null,則正常遞歸返回if(head ==NULL || head->next == NULL){return head;}//調用遞歸+邏輯//在函數內部,改變節點的指向,也就是 head 的下一個節點指向 head 遞歸函數ListNode* cur = reverseList(head->next);head->next->next = head;//防止鏈表循環,需要將head.next設置為空,此時原來的head變為尾部head->next = NULL;return cur;} }; 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的LeetCode 206. 反转链表 思考分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 光遇怎么让星星回归天际
- 下一篇: 【C、C++基础】什么时候用 “.” 什