每日一題 GO語言學習 奇偶鍊錶

2021-10-10 13:13:46 字數 1534 閱讀 9704

給定乙個單鏈表,把所有的奇數節點和偶數節點分別排在一起。請注意,這裡的奇數節點和偶數節點指的是節點編號的奇偶性,而不是節點的值的奇偶性。

請嘗試使用原地演算法完成。你的演算法的空間複雜度應為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

設定倆個指標依次向後移動將原先鍊錶分離出奇偶倆個鍊錶,再將倆個鍊錶合併。

指標odd首先指向頭結點,指標even指向頭結點之後第乙個節點,此時該結點為偶數鍊錶的頭結點。將even指標指向的結點(該結點為與odd同奇偶性的下乙個結點)連線在odd指標的後面,odd指標後移,此時odd指標指向的結點為even鏈所需要的下一結點,將odd指向的結點連線在even指標的後面,even指標後移。如此類推,最後必有乙個指標位於鍊錶末尾,於是迴圈判斷條件為eventemp!=nil&&eventemp.next!=nil

關鍵**

odd.next=eventemp.next//odd的next指向even的next

odd=odd.next//odd指標後移

eventemp.next=odd.next //even的next指向odd的next

eventemp=eventemp.next//even指標後移

/**

* definition for singly-linked list.

* type listnode struct

*/func

oddevenlist

(head *listnode)

*listnode

var even *listnode

var odd *listnode

var eventemp *listnode

odd=head

even=head.next

eventemp=even

for eventemp!=

nil&&eventemp.next!=

nil odd.next=even//合併倆個鍊錶

return head

}

每日刷題 奇偶鍊錶

請嘗試使用原地演算法完成。你的演算法的空間複雜度應為 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 解...

每日一題 反轉鍊錶

這道是牛客的題,給了鍊錶然後返回鍊錶的新表頭。拿到這道題首先肯定想到的是暴力求解,從表頭開始遍歷到尾,用尾元素作為新錶的表頭,然後遍歷尾元素的上乙個元素,鏈到新錶的最後然後不斷重複直到鍊錶的表頭鏈到新錶的尾巴 這樣有乙個很大的問題就是複雜度太高了,時間複雜度是o n n 這個時候我想到了肯定有簡單的...

Go每日一題 6

以下 是否編譯通過 package main import fmt type myint1 inttype myint2 int func main 輸出結果 編譯不通過,cannot use i type int as type myint1 in assignment。myint1 和 myin...