力扣簡206 反轉連結串列
阿新 • • 發佈:2022-05-30
連結串列 遞迴 迭代
我現在認為迭代是每一步處理一個問題,形成一個比原來規模小但是處理方法相同的子問題,直至處理完。
看了下發現連結串列和樹裡的迭代 都用while做結束條件 整體放在一個大迴圈體內 一步一步處理 我下面列的這個方法應該也是迭代
自己做的就常規想法:直接取下來頭,依次前插。
package leetcode01; /*給你單鏈表的頭節點 head,請你反轉連結串列,並返回反轉後的連結串列。*/ public class Solution206 { public static ListNode reverseList(ListNode head) { ListNode res=null; ListNode flag=res; while(head!=null) { res=head; head=head.next; res.next=flag; flag=res; } return res; } public static void main(String[] args) { // TODO Auto-generated method stub ListNode head=newListNode(1,new ListNode(2,new ListNode(3))); System.out.println(reverseList(head)); } }
題解一:迭代
public static ListNode reverseList(ListNode head) { ListNode pre=null; ListNode now=null; while(head!=null) { now=head; head=head.next; now.next=pre; pre=now; } return now; }
題解二:遞迴