99 - 重排链表
2017.10.23
首先遍歷鏈表,建立兩個隊列,一個存放前一半一個存放后一半。
然后再遍歷這兩個隊列,建立新的連接關系,重排鏈表。
/*** Definition for ListNode.* public class ListNode {* int val;* ListNode next;* ListNode(int val) {* this.val = val;* this.next = null;* }* }*/ public class Solution {/*** @param head: The head of linked list.* @return: void*/public void reorderList(ListNode head){if(head == null || head.next == null){return ;}LinkedList<ListNode> queue1 = new LinkedList<ListNode>();LinkedList<ListNode> queue2 = new LinkedList<ListNode>();//所有的節點均先入棧while(head != null){queue1.addFirst(head);head = head.next;}int i = queue1.size()/2;while(i > 0){queue2.addLast(queue1.pollFirst());i--;}head = queue1.pollLast();head.next = null;ListNode bt = head;while(!queue1.isEmpty()){queue2.peekFirst().next = queue1.peekLast();queue1.peekLast().next = bt.next;bt.next = queue2.pollFirst();bt = queue1.pollLast();}while(!queue2.isEmpty()){queue2.peekFirst().next = bt.next;bt.next = queue2.pollFirst();}} }總結
- 上一篇: Rational Rose下载安装教程
- 下一篇: ZOJ 2112 Dynamic Ran