題目奇偶鍊錶
給定乙個單鏈表,把所有的奇數節點和偶數節點分別排在一起。請注意,這裡的奇數節點和偶數節點指的是節點編號的奇偶性,而不是節點的值的奇偶性。
請嘗試使用原地演算法完成。你的演算法的空間複雜度應為 o(1),時間複雜度應為 o(nodes),nodes 為節點總數。
示例 1:
輸入: 1->2->3->4->5->null
輸出: 1->3->5->2->4->null
示例 2:
輸入: 2->1->3->5->6->4->7->null
輸出: 2->3->6->7->1->5->4->null
說明:應當保持奇數節點和偶數節點的相對順序。
鍊錶的第乙個節點視為奇數節點,第二個節點視為偶數節點,以此類推。
解題思路如下:
修改指標的,就是奇數字的指標都跳過偶數項直接指向下乙個奇數字,偶數字也一樣,最後將偶數字組成的鍊錶指標頭部指向奇數字鍊錶的尾部。
需要注意的是:
1. 需要儲存偶數的頭部指標的位址
2. 需要儲存住奇數指標鍊錶的頭部和尾部
**如下:
/**
* 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
if (head->next == null)
listnode *p = head;
listnode *odd = p->next;
listnode *q = null;
while(p!=null && p->next != null)
else
p->next = q->next;
if (p->next != null)
else
}p->next = odd;
return head;
}};
letecode 程式設計學習(4)
題目 給定乙個整數陣列和乙個區間,計算有多少連續子陣列的和在區間範圍內 例如 陣列 3,0,5,2,2 區間為 1,3 則輸出的子陣列有 3 2,2 3,0 3,0,5,2,2 這5種,輸出為5。include include include include includestruct treeno...
letecode 程式設計學習(12)
題目 在一條環路上有 n 個加油站,其中第 i 個加油站有汽油 gas i 公升。你有一輛油箱容量無限的的汽車,從第 i 個加油站開往第 i 1 個加油站需要消耗汽油 cost i 公升。你從其中的乙個加油站出發,開始時油箱為空。如果你可以繞環路行駛一周,則返回出發時加油站的編號,否則返回 1。說明...
letecode程式設計學習(15)
在二維空間中有許多球形的氣球。對於每個氣球,提供的輸入是水平方向上,氣球直徑的開始和結束座標。由於它是水平的,所以縱座標並不重要,因此只要知道開始和結束的橫座標就足夠了。開始座標總是小於結束座標。一支弓箭可以沿著 x 軸從不同點完全垂直地射出。在座標 x 處射出一支箭,若有乙個氣球的直徑的開始和結束...