【Leetcode】Swap Nodes in Pairs
2015-11-18 21:54
801 查看
题目链接:https://leetcode.com/problems/swap-nodes-in-pairs/
题目:
Given a linked list, swap every two adjacent nodes and return its head.
For example,
Given
Your algorithm should use only constant space. You may not modify the values in the list, only nodes itself can be changed.
思路:
没什么思路。。直接做。。就是具体实现各种边界条件要考虑
算法:
我实现的太麻烦了,而且让我自己在一小时内再重现一遍我都没信心,不过据说链表题在面试中出现的不多。。更好的解法见:点击打开链接
题目:
Given a linked list, swap every two adjacent nodes and return its head.
For example,
Given
1->2->3->4, you should return the list as
2->1->4->3.
Your algorithm should use only constant space. You may not modify the values in the list, only nodes itself can be changed.
思路:
没什么思路。。直接做。。就是具体实现各种边界条件要考虑
算法:
public ListNode swapPairs(ListNode head) { ListNode pre = null, q = head, p = head, t = null; if (head == null || q.next == null) return head; p = q.next; t = q.next.next; // pre q p t,调整q/p位置,以1,2,3为例 while (p != null) { p.next = q; // 互换两节点 if (pre != null) // 如果不是头节点交换 pre.next = p; else head = p; pre = q; // 调整pre指针 q = t;// 调整q 指针 if (q != null) { p = q.next;// 调整p指针 if (p != null) { t = p.next;// 调整t指针 } else { pre.next = q;// 如果p为空,则是奇数节点,则调整尾节点一个节点指向,并跳出循环 break; } } else // 若为空则结束循环 break; } if (q == null) // 若为偶数节点并到末尾,则调整尾节点为空,防止存在循环 pre.next = null; return head; }
我实现的太麻烦了,而且让我自己在一小时内再重现一遍我都没信心,不过据说链表题在面试中出现的不多。。更好的解法见:点击打开链接
相关文章推荐
- NodeJs 安全
- NameNode 格式化失败问题的解决
- win7下搭建node.js环境,并解决expressexpress不是内部或外部命令,也不是可运行的程序或批处理文件的问题
- leetcode25 Reverse Nodes in k-Group
- 利用forever确保nodejs在后台运行,不会down掉
- 采用express创建nodejs服务器
- nodejs学习篇 (1)webstorm创建nodejs + express + jade 的web 项目
- nodejs一个产生随机数的demo
- node.js学习笔记13—express视图
- unbutu安装nodejs环境
- 一步步学习使用node和express开发web应用(三)——使用EJS模板
- 引用自nodejs开发指南的一段话
- hadoop livenode 1的问题
- Nodejs初阶之express
- node.js+express+socket的聊天室示例
- children和childNodes 的区别
- ubuntu14.10 安装node.js
- hlist_head / hlist_node 设计浅析
- 【Leetcode】之Reverse Nodes in k-Group
- node.js学习资料