我之前是想著,用棧來儲存倒置的鍊錶,然後再以結點數作為while條件來依次地插入。可是超時了。因為別人題解裡也有這種做法,但是有通過,看了一下,可能原因出在「別人找了鍊錶的中點,只是用棧儲存了鍊錶的後半部分」,而我是棧儲存全部部分。
看了題解受到啟發,用了另一種方法:化解為熟悉的三個小題(感覺這種思想不錯哦!):
① 找到鍊錶中點,拆成兩個鍊錶
②反轉後半部分的那個鍊錶
③ 將兩個鍊錶按題意合併
實現沒什麼問題,而且學到在迴圈處理鍊錶的時候首先採用↓,是多麼方便多麼爽!!!
listnode* pp = p; //先生成當前結點的副本,來進行處理
p=p->next; //迭代變數先溜了,不要被影響
但是仍然沒有一次性ac,找了半天,原因在於:倒置(反轉)鍊錶的時候,頭插法,要先將頭結點->next=null。別粗心呀。
/**
* definition for singly-linked list.
* struct listnode
* };
*/class solution
return slow;
}listnode* reverselist(listnode* head)
return head;
}listnode* mergelist(listnode* head1,listnode* head2)
return head1;
}void reorderlist(listnode *head)
};
Reorder List 鍊錶重排序
given a singly linked list l l0 l1 ln 1 ln,reorder it to l0 ln l1 ln 1 l2 ln 2 you must do this in place without altering the nodes values.for example...
Reorder List 穿插反轉鍊錶
given a singly linked list l l0 l 1 ln 1 l n,reorder it to l 0 ln l1 l n 1 l 2 ln 2 you may not modify the values in the list s nodes,only nodes itsel...
鍊錶 環形鍊錶
環形鍊錶也叫迴圈鍊錶 可以是雙鏈表 也可以是單鏈表 操作原理和單鏈表差不多,只是最後乙個節點不在指向空 null 而是頭 head 這裡以單鏈表舉例 description 環形鍊錶 author lzq date 2018 11 3 20 46 version 1.0 public class a...