题解 | #链表的奇偶重排#重建链表更清晰易懂一些【附关键代码debug截图】

链表的奇偶重排

http://www.nowcoder.com/practice/02bf49ea45cd486daa031614f9bd6fc3

【附代码debug截图:引用地址相同,始终指向一个对象,因此可以不断的对链表的下一个节点数据进行修改】

import java.util.*;

/*
 * public class ListNode {
 *   int val;
 *   ListNode next = null;
 *   public ListNode(int val) {
 *     this.val = val;
 *   }
 * }
 */

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     * 
     * @param head ListNode类 
     * @return ListNode类
     */
	public ListNode oddEvenList (ListNode head) {
		if (head == null || head.next == null) {
			return head;
		}
		List<Integer> m = new ArrayList<>();
		List<Integer> n = new ArrayList<>();
		int count = 0;
		while (true) {
			if (count != 0) {
				head = head.next;
			}
			if (head == null) {
				break;
			}
			count ++;
			if (count % 2 == 0) {
				n.add(head.val);
			} else {
				m.add(head.val);
			}
		}
        
		ListNode newNode = new ListNode(0);
		ListNode temp = newNode;
		for (Integer num : m) {
            temp.next = new ListNode(num);
            temp = temp.next;
		}
        for (Integer num : n) {
            temp.next = new ListNode(num);
            temp = temp.next;
		}
		return newNode.next;
	}

}  

全部评论

相关推荐

政委qqq:这道题在算法竞赛里唯一考的就是高精度,但是只能难住C++这类语言,Python直接a+b秒天秒地
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务