面試題 k個一組翻轉單鏈表

2021-10-21 15:30:51 字數 969 閱讀 3127

鍊錶中的節點每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...