翻轉乙個鍊錶樣例
給出乙個鍊錶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...