經典面試題 k節點一組旋轉鍊錶

2021-06-27 16:06:35 字數 1192 閱讀 6691

【題目】

給出乙個鍊錶和乙個數k,比如鍊錶1→2→3→4→5→6,k=2,則翻轉後2→1→4→3→6→5,若k=3,翻轉後3→2→1→6→5→4,若k=4,翻轉後4→3→2→1→5→6。

如果節點的數量是不k的倍數則最終留出節點應該保持原樣,每k個一反轉,不到k個不用反轉。用程式實現。

------美團校招

來自leetcode :reverse nodes in k-group

【**】

#include #include using namespace std;

struct listnode

};// head不帶頭結點

// k 旋轉個數

// 最後不滿k個不用旋轉

listnode *reversekgroup(listnode *head, int k)

//新增頭結點

listnode *dummy = new listnode(0);

dummy->next = head;

listnode *pre,*cur,*tail;

pre = dummy;

// 分組旋轉的第乙個節點即旋轉後的尾節點

tail = head;

// 當前節點

cur = head;

int count = 0;

// 統計節點個數

while(cur != null)

// 旋轉次數

int rcount = count / k;

// 分組旋轉下標

int index = 0;

// 旋轉

while(rcount)//while

pre = tail;

tail = tail->next;

rcount--;

}//while

return dummy->next;

}int main();

listnode *head = new listnode(0);

head->next = null;

listnode *node;

listnode *pre = head;

for(int i = 0;i < 5;i++)

head = reversekgroup(head->next,3);

while(head != null)

cout<

記一組面試題

我當時用的是python的內建函式,現在想想應該自己實現乙個堆排序的,這個才是最好的排序方式 堆排序裡面的儲存結構是陣列 邏輯結構是二叉樹 def heapsortmax lst,n 找出最大值登頂對頂 n len lst if n 1 return lst depth n 2 1 這個深度是0 d...

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

鍊錶中的節點每k個一組翻轉 注意點 對於上面注意點的第三條,要封裝的函式如下 注意下面的函式是左閉右開即只翻轉綠色的部分 翻轉一段鍊錶 左閉右開 翻轉從start到end之間的鍊錶 public listnode reverselist listnode start,listnode end ret...

k個一組翻轉鍊錶

題目描述 給出乙個鍊錶,每 k 個節點一組進行翻轉,並返回翻轉後的鍊錶。k 是乙個正整數,它的值小於或等於鍊錶的長度。如果節點總數不是 k 的整數倍,那麼將最後剩餘節點保持原有順序。示例 給定這個鍊錶 1 2 3 4 5當 k 2 時,應當返回 2 1 4 3 5當 k 3 時,應當返回 3 2 1...