題目描述:乙個鍊錶,奇數字公升序偶數字降序,讓鍊錶變成公升序的。
比如:1 8 3 6 5 4 7 2 9,最後輸出1 2 3 4 5 6 7 8 9。
分析:這道題可以分成三步:
首先根據奇數字和偶數字拆分成兩個鍊錶。
然後對偶數鍊錶進行反轉。
最後將兩個有序鍊錶進行合併。
packagecom.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()
}
合併兩個單鏈表,還可以採用遞迴的方式:
publicclass
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...