143 重排鍊錶

2021-10-06 06:02:36 字數 919 閱讀 9645

題解:時間複雜度:o(n)

空間複雜度:o(n)

/**

* * definition for singly-linked list.

* * struct listnode

* * listnode(int x) : val(x), next(nullptr) {}

* * listnode(int x, listnode *next) : val(x), next(next) {}

* * };

* */

class solution

stacksta;

listnode* temp = head;

// 使用棧儲存

while(temp)

if(sta.size() < 2)

temp = head;

// 需要獲取的size

int size = sta.size()/2;

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

temp->next = nullptr;}};

1 -> 2 -> 3 -> 4 -> 5 -> 6

第一步,將鍊錶平均分成兩半

1 -> 2 -> 3

4 -> 5 -> 6

第二步,將第二個鍊錶逆序

1 -> 2 -> 3

6 -> 5 -> 4

第三步,依次連線兩個鍊錶

1 -> 6 -> 2 -> 5 -> 3 -> 4

143 重排鍊錶

143.重排鍊錶 給定乙個單鏈表 l l0 l1 l n 1 ln 將其重新排列後變為 l0 l n l1 l n 1 l2 l n 2 你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換。示例 1 給定鍊錶 1 2 3 4,重新排列為 1 4 2 3.示例 2 給定鍊錶 1 2 3 4 ...

143 重排鍊錶

題目 給定乙個單鏈表 l l0 l1 l n 1 ln 將其重新排列後變為 l0 l n l1 l n 1 l2 l n 2 你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換。示例 1 給定鍊錶 1 2 3 4,重新排列為 1 4 2 3.示例 2 給定鍊錶 1 2 3 4 5,重新排列...

143 重排鍊錶

給定乙個單鏈表 l l0 l1 ln 1 ln 將其重新排列後變為 l0 ln l1 ln 1 l2 ln 2 你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換。示例 1 給定鍊錶 1 2 3 4,重新排列為 1 4 2 3.暴力,使用stack逆序儲存後面要插入的數字 因為和遍歷的順序...