每日一题——剑指 Offer24反转链表
如果您是第一次看我寫的博客,可以給我點(diǎn)個(gè)贊并關(guān)注我嗎,我會(huì)持續(xù)分享更多有意思的干貨。
文章目錄
- 1 題目
- 2 思路
- 3 代碼
- 4 小結(jié)
1 題目
劍指 Offer 24. 反轉(zhuǎn)鏈表
定義一個(gè)函數(shù),輸入一個(gè)鏈表的頭節(jié)點(diǎn),反轉(zhuǎn)該鏈表并輸出反轉(zhuǎn)后鏈表的頭節(jié)點(diǎn)。
示例:
輸入: 1->2->3->4->5->NULL
輸出: 5->4->3->2->1->NULL
限制:
0 <= 節(jié)點(diǎn)個(gè)數(shù) <= 5000
2 思路
最開始我是想嘗試用頭插法的思路,把數(shù)據(jù)從原有的鏈表中讀取出來后用頭插法放入一個(gè)新鏈表中。但是我犯了一個(gè)錯(cuò)誤,原題意沒有頭結(jié)點(diǎn)!所以頭插法在沒有頭結(jié)點(diǎn)的情況下就顯得有點(diǎn)無奈了。
為此在網(wǎng)上翻閱步驟后,我學(xué)到了一個(gè)小竅門,即無需創(chuàng)建一個(gè)新的鏈表,在原有鏈表的基礎(chǔ)上,我們可以改動(dòng)原來鏈表指針的朝向即可。
既然有了思路,我們立馬動(dòng)手吧!
3 代碼
/*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode(int x) : val(x), next(NULL) {}* };*/ class Solution { public:ListNode* reverseList(ListNode* head) {ListNode * cur = head;ListNode * pre = NULL;ListNode * Temp = NULL;while(cur != NULL){Temp = cur->next;cur->next = pre;pre = cur;cur = Temp;}return pre;} };4 小結(jié)
實(shí)際上,如果在最后的題意中能夠把head指向逆置鏈表的首元節(jié)點(diǎn)就更完美了。對(duì)于這道題的解法來說時(shí)間復(fù)雜度是O(n),空間復(fù)雜度是O(1),其花的時(shí)間主要用于遍歷上。
總結(jié)
以上是生活随笔為你收集整理的每日一题——剑指 Offer24反转链表的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Regulator的下载地址
- 下一篇: 红警2的经验和秘籍及不是秘笈的秘笈(4)