重排链表-leetcode(143)

重排链表  LeetCode-重排链表(143)

给定一个单链表 L:L0→L1→…→Ln-1→Ln ,
将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→…

要求进行节点交换

解题思路:

  1. 将所有节点存入栈中
  2. 依次出栈,从尾节点开始交错插入链表中
  3. 到达链表的中间结束
var reorderList = function(head) {
   // 若链表为空或只有一个节点,那么就不用重排 if (!head || !head.next) { return } var p = head var h = head var stack = [] while (p) { stack.push(p) p = p.next }
// 根据链表长度是奇数还是偶数,计算结束条件 var len = stack.length / 2 + stack.length % 2 while (stack.length > len) { p = stack.pop() p.next = h.next h.next = p h = h.next.next } h.next = null }

 

上一篇:高等数学-积分公式


下一篇:软链接与硬链接的区别