題目描述:
給定乙個單向鍊錶的頭結點head,以及兩個整數from和to,在單向鍊錶上把第from個節點到第to個節點這一部分進行反轉
例如:1->2->3->4->5->null, from = 2, to = 4
調整結果為:1->4->3->2->5->null
再如:1->2->3->null, from = 1, to = 3
調整結果為:
3->2->1->null
要求:1.如果鍊錶的長度為n,時間複雜度要求o(n),額外空間複雜度要求為o(1)
2.如果不滿足1 <= from <= to <=n,則不用調整
思路:注意反轉的順序,比如上述的第乙個例子中,先把2和4的下一節點5連線,然後再依次把3和2連線,把4和3連線,對於第二個例子,同樣,先把1和3的下乙個節點null連線,然後依次把2和1連線,把3和2連線,這是兩個例子的共同特點,有所不同的是,第一點:第乙個例子還需要將1和已經反轉好的鍊錶進行連線 ;第二點:兩者返回的頭結點不同,對於第乙個例子來說直接返回頭結點head就ok,對於第二個例子來說需要返回是3這個節點
public
class
code_012_reversepart
}public
static node reversepart
(node head,
int from,
int to)
if(from > to || from <
1|| to > count)
cur = fromprev == null ? head : fromprev.next;
node prev = tonext;
node next = null;
while
(cur != tonext)
//頭結點不用反轉的情況,將不用反轉的鍊錶和已經反轉好的鍊錶進行連線
if(fromprev != null)
//頭結點需要反轉的情況,返回新的頭結點
return prev;//}
}
反轉部分單向鍊錶
給定乙個單向鍊錶的頭節點head,以及兩個整數from和to,在單項鍊表上把第from個節點到to個節點的這一部分進行反轉。例如 1 2 3 4 5 null from 2,to 4 調整結果為1 4 3 2 5 null 再如1 2 3 null from 1,to 3 調整結果為3 2 1 nu...
反轉部分單向鍊錶
說明 本文是左程雲老師所著的 程式設計師面試 指南 第二章中 反轉部分單向鍊錶 這一題目的c 復現。本文只包含問題描述 c 的實現以及簡單的思路,不包含解析說明,具體的問題解析請參考原書。感謝左程雲老師的支援。題目 給定乙個單向鍊錶的頭節點 head,以及兩個整數 from 和 to,在單向鍊錶上把...
反轉部分單向鍊錶
給定乙個單向鍊錶的頭節點head,以及兩個整數from和to,在單向鍊錶上把第from個節點到第to個節點這一部分進行反轉。例如 1 2 3 4 5 6 null,from 3,to 5 調整結果為 1 2 5 4 3 6 null 1 2 3 null,from 1,to 3 調整結果為 3 2 ...