1、題目描述
給定乙個單鏈表,把所有的奇數節點和偶數節點分別排在一起。請注意,這裡的奇數節點和偶數節點指的是節點編號的奇偶性,而不是節點的值的奇偶性。
請嘗試使用原地演算法完成。你的演算法的空間複雜度應為 o(1),時間複雜度應為 o(nodes),nodes 為節點總數。
說明:2、示例
輸入: 1->2->3->4->5->null
輸出: 1->3->5->2->4->null
3、題解
基本思想:單鏈表的基本操作,head是偶鍊錶的頭,p是偶鍊錶的尾,head2是奇鍊錶的頭,q是奇鍊錶的尾,cur指向當前節點,nextnode指向下乙個節點,如果cur當前節點是偶節點則加入偶鍊錶的尾端,否則加入奇鍊錶的尾端。
#include#include#include#includeusing namespace std;
struct listnode
listnode(int x) : val(x), next(nullptr) {}
listnode(int x, listnode *next) : val(x), next(next) {}
};void init_listnode(listnode* head, vectorvec)
listnode* p;
p = head;
p->val = vec[0];
for (int i = 1; i < vec.size(); i++) }
class solution
else
i++;
cur=nextnode;
}p->next=head2;
return head;
}};int main()
; init_listnode(head, vec);
listnode* res=solute.oddevenlist(head);
while(res)
return 0;
}
328 奇偶鍊錶
給定乙個單鏈表,把所有的奇數節點和偶數節點分別排在一起。請注意,這裡的奇數節點和偶數節點指的是節點編號的奇偶性,而不是節點的值的奇偶性。請嘗試使用原地演算法完成。你的演算法的空間複雜度應為 o 1 時間複雜度應為 o nodes nodes 為節點總數。示例 1 輸入 1 2 3 4 5 null輸...
328 奇偶鍊錶
給定乙個單鏈表,把所有的奇數節點和偶數節點分別排在一起。請注意,這裡的奇數節點和偶數節點指的是節點編號的奇偶性,而不是節點的值的奇偶性。請嘗試使用原地演算法完成。你的演算法的空間複雜度應為 o 1 時間複雜度應為 o nodes nodes 為節點總數。示例 1 輸入 1 2 3 4 5 null ...
328 奇偶鍊錶
題目描述 給定乙個單鏈表,把所有的奇數節點和偶數節點分別排在一起。請注意,這裡的奇數節點和偶數節點指的是節點編號的奇偶性,而不是節點的值的奇偶性。請嘗試使用原地演算法完成。你的演算法的空間複雜度應為 o 1 時間複雜度應為 o nodes nodes 為節點總數。示例 1 輸入 1 2 3 4 5 ...