(Java)LeetCode-24. Swap Nodes in Pairs
2016-06-02 16:53
513 查看
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.
这道题是简单难度的,我最开始打算用递归来两两求解的,不过后来发现不用这样,就从前往后每两个颠倒一下顺序即可,如果是奇数个则最后一个不用管。就是交换位置时编程稍有些麻烦,不过仔细点就可以做出来的,时间也很快,不到1ms
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
public class Solution {
public ListNode swapPairs(ListNode head) {
ListNode root = new ListNode(-1);
root.next = head;
ListNode pre_head = root;
while(head != null && head.next!= null){
ListNode Node1 = head;
ListNode Node2 = head.next.next;
root.next = head.next;
root = root.next;
root.next = Node1;
Node1.next = Node2;
root = root.next;
head = Node2;
}
return pre_head.next;
}
}
如果采用递归的话,代码看起来会更整洁,因为有一个每一小段的头节点可以用函数直接返回,代码如下~:
public ListNode swapPairs(ListNode head) {
if(head == null){
return null;
}
if(head.next == null){
return head;
}
ListNode temp = head.next;
head.next = swapPairs(temp.next);
temp.next = head;
return temp;
}
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.
这道题是简单难度的,我最开始打算用递归来两两求解的,不过后来发现不用这样,就从前往后每两个颠倒一下顺序即可,如果是奇数个则最后一个不用管。就是交换位置时编程稍有些麻烦,不过仔细点就可以做出来的,时间也很快,不到1ms
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
public class Solution {
public ListNode swapPairs(ListNode head) {
ListNode root = new ListNode(-1);
root.next = head;
ListNode pre_head = root;
while(head != null && head.next!= null){
ListNode Node1 = head;
ListNode Node2 = head.next.next;
root.next = head.next;
root = root.next;
root.next = Node1;
Node1.next = Node2;
root = root.next;
head = Node2;
}
return pre_head.next;
}
}
如果采用递归的话,代码看起来会更整洁,因为有一个每一小段的头节点可以用函数直接返回,代码如下~:
public ListNode swapPairs(ListNode head) {
if(head == null){
return null;
}
if(head.next == null){
return head;
}
ListNode temp = head.next;
head.next = swapPairs(temp.next);
temp.next = head;
return temp;
}
相关文章推荐
- node.js 动态执行脚本
- 学习AngularJS为什么要安装Node.js
- nodejs require 加载机制
- 解决DataNode Volume Failures故障
- 分区里的inode号是0号和1号的block
- Uncaught TypeError: _react2.default.findDOMNode is not a function
- nodejs post 数据被截断问题
- Nodejs热部署
- Nodejs之MEAN栈开发(二)----视图与模型
- [leetcode] 【链表】25. Reverse Nodes in k-Group
- node.js 动态执行脚本
- 传统的HDFS单Namenode架构的局限性
- Swap Nodes in Pairs
- Node和express中利用Jquery的$.ajax和HTML5的FormData完成文件上传示例
- Delete Node in a Linked List
- Node安装express4后命令行提示找不到命令的解决
- [leetcode] 【链表】24. Swap Nodes in Pairs
- NodeJS优缺点及适用场景讨论
- Node.js在Chrome进行调试
- Node.js 使用formidable上传文件及接受POST数据