206 反轉鍊錶(兩種方法 迭代和遞迴)

2021-09-16 13:53:47 字數 522 閱讀 5775

解題思路:

1.迭代–建立乙個新的鍊錶的啞巴節點root,建立乙個過度指標n,使用頭插法將head鍊錶中的元素取出插入root鍊錶中,返回root.next;

class solution 

listnode root=new listnode(0);

listnode n=null;

while(head!=null)

return root.next;}}

2.遞迴

class solution 

listnode h=reverselist(head.next);

head.next.next=head;

head.next=null;

return h;}}

反轉鍊錶 清晰易懂的兩種方法

反轉乙個單鏈表。如下示例 輸入 1 2 3 4 5 null 輸出 5 4 3 2 1 null public class listnode 一 迭代法 注意觀察示例 1 2 3 4 5 null的反轉可以看成 null 1 2 3 4 5。會發現鍊錶的反轉基本上就是箭頭的方向的反轉,即節點前驅和後...

LeetCode206 鍊錶反轉兩種實現

迭代實現 小結反轉乙個單鏈表。輸入 1 2 3 4 5 null 輸出 5 4 3 2 1 null 其實拿到這個題目首先應該想到的是遞迴拆分。1 既然是反轉鍊錶,那我們先從最簡單的兩個節點開始 2 拿到這個最簡單的鍊錶,我們不難看出。因為2的下乙個節點是空,所以反轉後,2就是頭結點。所以,我們可以...

leecode206 鍊錶反轉 三種方法

第一種 記錄前驅,從第乙個節點開始 1.用乙個指標記錄其next的位置 防止在其指向前面節點無法指向後面的節點的位置 q p next 2.記錄了後面的位置,那我們可以大膽的將p next指向前驅節點pre p next pre 3.前驅節點變為當前節點 pre p 4.當前節點可以達到後面節點的位...