演算法 頭條面試 奇數字公升序偶數字降序鍊錶排序

2022-03-20 15:13:03 字數 1489 閱讀 6849

題目描述:乙個鍊錶,奇數字公升序偶數字降序,讓鍊錶變成公升序的。

比如:1 8 3 6 5 4 7 2 9,最後輸出1 2 3 4 5 6 7 8 9。

分析:這道題可以分成三步:

首先根據奇數字和偶數字拆分成兩個鍊錶。

然後對偶數鍊錶進行反轉。

最後將兩個有序鍊錶進行合併。

package

com.darrenchan.list;

public

class

oddincreaseevendecrease

else

}else

else

}head =head.next;

count++;

}//跳出迴圈,要讓最後兩個末尾元素的下乙個都指向null

cur1.next = null

; cur2.next = null

;

node nodes = new

node;

return

nodes;

}/*** 反轉鍊錶

* @param

head

* @return

*/public

static

node reverselist(node head)

return

pre;

}/*** 合併兩個有序鍊錶

* @param

head1

* @param

head2

* @return

*/public

static

node combinelist(node head1, node head2)

node head = head1.value < head2.value ?head1 : head2;

node cur1 = head == head1 ?head1 : head2;

node cur2 = head == head1 ?head2 : head1;

node pre = null

; node next = null

;

while(cur1 != null && cur2 != null

)else

}pre.next = cur1 == null ?cur2 : cur1;

return

head;

}public

static

void

main(string args)

}public

static

node init()

}

合併兩個單鏈表,還可以採用遞迴的方式:

public

class

solution

else

return

head;

}}

演算法題 奇數字放奇數偶數字放偶數

今天面試遇到這樣一道題,乙個長度為2n的整數陣列,裡邊有n個奇數n個偶數但是無序,要求奇數字放奇數偶數字放偶數 結題思路 採用雙指標分別記錄奇數字和偶數字,當偶數字的值錯誤的時候如果奇數錯誤的index不為空則交換數值,如果為空則將index記錄下來。奇數同理 public static void ...

奇數字公升序偶數字降序的鍊錶進行排序

這道題可以分成三步 首先根據奇數字和偶數字拆分成兩個鍊錶。然後對偶數鍊錶進行反轉。最後將兩個有序鍊錶進行合併 合併兩種實現方式一種是遞迴另外一種是非遞迴 class node public static void main string args public static node init pu...

轉換陣列使奇數字為奇數 偶數字為偶數

設定 odd even兩個標誌位為odd為1,even為0,然後從最後一位開始看,如果說最後一位為偶數,就和even位交換,even自增2,如果是奇數,則和odd位交換,odd自增2,一直到二者其中乙個越界位置。解法比較奇特。include include include using namespa...