题解 | #链表的奇偶重排#
链表的奇偶重排
http://www.nowcoder.com/practice/02bf49ea45cd486daa031614f9bd6fc3
两个链表的解法
* function ListNode(x){
* this.val = x;
* this.next = null;
* }
*/
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param head ListNode类
* @return ListNode类
*/
function oddEvenList( head ) {
// write code here
// 第一直觉用数组
// 第二直觉用两个链表
if(!head) return null;
let p = head;
let l1 = new ListNode(-1);
let l2 = new ListNode(-1);
let p1 = l1;
let p2 = l2;
let count = 1;
while(p){
let pnext = p.next;//防止断链
if(count % 2 === 1){
p1.next = p;
p1 = p1.next;
}else{
p2.next = p;
p2 = p2.next;
}
p = pnext;
count++;
}
// console.log(l1)
// console.log(l2)
// 必须要有,断链操作
p2.next = null;
// 两个链表链接起来
p1.next = l2.next;
return l1.next;
}
module.exports = {
oddEvenList : oddEvenList
};