LeetCode 206. 反转链表 思考分析
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 206. 反转链表 思考分析
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
題目
反轉(zhuǎn)一個(gè)單鏈表。
示例:
輸入: 1->2->3->4->5->NULL
輸出: 5->4->3->2->1->NULL
進(jìn)階:
你可以迭代或遞歸地反轉(zhuǎn)鏈表。你能否用兩種方法解決這道題?
迭代+雙指針
從某公眾號(hào)(代碼隨想錄)搬過來的gif圖:看了能很好地理解轉(zhuǎn)置的過程
遞歸解
遞歸思路:
遞歸動(dòng)態(tài)圖:
主要思路:
head 的下一個(gè)節(jié)點(diǎn)指向head
具體實(shí)現(xiàn)步驟過程見:
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) {//終止條件://終止條件是當(dāng)前節(jié)點(diǎn)或者下一個(gè)節(jié)點(diǎn)==null//終止條件為何是這個(gè)?第一個(gè)head是null,防止一開始傳入的就是空指針//若一開始傳入的就是空指針,則會(huì)返回空指針//若一開始傳入的是head+null,則會(huì)直接返回head//若一開始傳入的是head+node2+...+null,則正常遞歸返回if(head ==NULL || head->next == NULL){return head;}//調(diào)用遞歸+邏輯//在函數(shù)內(nèi)部,改變節(jié)點(diǎn)的指向,也就是 head 的下一個(gè)節(jié)點(diǎn)指向 head 遞歸函數(shù)ListNode* cur = reverseList(head->next);head->next->next = head;//防止鏈表循環(huán),需要將head.next設(shè)置為空,此時(shí)原來的head變?yōu)槲膊?/span>head->next = NULL;return cur;} }; 創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的LeetCode 206. 反转链表 思考分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 光遇怎么让星星回归天际
- 下一篇: 二叉树笔记(深度遍历与广度遍历+13道l