鍊錶中的節點每k個一組翻轉
注意點:
對於上面注意點的第三條,要封裝的函式如下:
注意下面的函式是左閉右開即只翻轉綠色的部分:
//翻轉一段鍊錶(左閉右開)
//翻轉從start到end之間的鍊錶
public listnode reverselist
(listnode start, listnode end)
return pre;
}
上面的寫法如果按照如下呼叫:其也可以充當翻轉單鏈表的解法
reverselist(head, null);本題思路:
將每k個一組的翻轉過程進行封裝成乙個單獨的函式,函式的引數為開始結點和結束結點:listnode start, listnode end, 函式返回翻轉後的新的起始節點,注意我們要儲存下來每一組翻轉後的新的結束結點(也就是每組未反轉前的開始結點)讓其指向下一組翻轉後的新的開始結點。這也是為什麼引入輔助頭結點的原因,因為要考慮第一組的情況,需要讓輔助的頭結點指向第一組翻轉後的新的開始結點。
public
class
solution
if(cnt==k)
else
}return dummy.next;
}//輔助函式,翻轉從start到end之間的鍊錶
public listnode reverselist
(listnode start, listnode end)
return pre;
}}
記一組面試題
我當時用的是python的內建函式,現在想想應該自己實現乙個堆排序的,這個才是最好的排序方式 堆排序裡面的儲存結構是陣列 邏輯結構是二叉樹 def heapsortmax lst,n 找出最大值登頂對頂 n len lst if n 1 return lst depth n 2 1 這個深度是0 d...
k個一組翻轉鍊錶
題目描述 給出乙個鍊錶,每 k 個節點一組進行翻轉,並返回翻轉後的鍊錶。k 是乙個正整數,它的值小於或等於鍊錶的長度。如果節點總數不是 k 的整數倍,那麼將最後剩餘節點保持原有順序。示例 給定這個鍊錶 1 2 3 4 5當 k 2 時,應當返回 2 1 4 3 5當 k 3 時,應當返回 3 2 1...
K 個一組翻轉鍊錶
給你乙個鍊錶,每 k 個節點一組進行翻轉,請你返回翻轉後的鍊錶。k 是乙個正整數,它的值小於或等於鍊錶的長度。如果節點總數不是 k 的整數倍,那麼請將最後剩餘的節點保持原有順序。示例 給定這個鍊錶 1 2 3 4 5 當 k 2 時,應當返回 2 1 4 3 5 當 k 3 時,應當返回 3 2 1...