LintCode 35 翻轉鍊錶

2021-08-15 02:04:05 字數 979 閱讀 7447

翻轉乙個鍊錶

樣例

給出乙個鍊錶1->2->3->null,這個翻轉後的鍊錶為3->2->1->null

挑戰

在原地一次翻轉完成

看完題目第乙個想到的就是用遞迴,每次讓最後乙個節點的next指標指向他的前置節點。

/**

* definition of listnode

* * class listnode

* }*/class solution else

if(head->next == null) else

listnode *q = p->next;

p->next = null;

q->next = reverse(head);}}

};

對於挑戰的要求,個人理解就是一次性將整個鍊錶反過來而不是乙個乙個往回倒。於是就想到可以利用棧的特點——先進後出,後進先出,這樣就可以實現翻轉了。個人理解僅供參考,**如下:

/**

* definition of listnode

* * class listnode

* }*/class solution

listnode *newhead = new listnode(stk.top().val);

stk.pop();

p = newhead;

while(!stk.empty())

p->next = null;

return newhead;

}};

改完看看還有沒有更好的辦法,看到了乙個沒有用遞迴,**也很精簡的。這是鏈結

LintCode 36(翻轉鍊錶 II)

lintcode系列,第36題,題目 翻轉鍊錶中第m個節點到第n個節點的部分,m,n滿足1 m n 鍊錶長度。樣例 例1 輸入 1 2 3 4 5 null,m 2 and n 4,輸出 1 4 3 2 5 null.例2 輸入 1 2 3 4 null,m 2 and n 3,輸出 1 3 2 4...

每日一題 LintCode 鍊錶翻轉題解

lintcode 翻轉鍊錶 翻轉乙個鍊錶 給出乙個鍊錶1 2 3 null,這個翻轉後的鍊錶為3 2 1 null 在原地一次翻轉完成 翻轉鍊錶是乙個很基礎的題,同時也是面試中開場常問的題,那麼他的難點在哪呢?我們都知道單鏈表的資料結構如下 public class listnode 翻轉的實現是怎...

LintCode 鍊錶劃分

容易 鍊錶劃分 檢視執行結果 29 通過 給定乙個單鏈表和數值x,劃分鍊錶使得所有小於x的節點排在大於等於x的節點之前。你應該保留兩部分內煉表節點原有的相對順序。您在真實的面試中是否遇到過這個題?yes 樣例 給定鍊錶 1 4 3 2 5 2 null,並且 x 3 返回 1 2 2 4 3 5 n...