Swap Nodes in Pairs
2015-07-28 20:53
597 查看
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.
题目要求从头算起,两个结点为一组交换位置。当时的思路是先计算组数,然后在一个for循环中组内交换。再一想不用记录组数,直接在循环内p=p.next.next,直接跳过两个就可以了。而且实现交换的条件也简单,需要 p!=null && p.next !=null。这样可以解决如果结点个数是奇数的情况。
代码:
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.
题目要求从头算起,两个结点为一组交换位置。当时的思路是先计算组数,然后在一个for循环中组内交换。再一想不用记录组数,直接在循环内p=p.next.next,直接跳过两个就可以了。而且实现交换的条件也简单,需要 p!=null && p.next !=null。这样可以解决如果结点个数是奇数的情况。
代码:
package leetcode; import java.util.List; public class SwapNodes { public static void main(String[] args) { SwapNodes s = new SwapNodes(); ListNode n1 = new ListNode(1); ListNode n2 = new ListNode(2); ListNode n3 = new ListNode(3); ListNode n4 = new ListNode(4); n1.next=n2; n2.next=n3; n3.next=n4; s.swapPairs(n1); ListNode l = n1; while(l!=null){ System.out.println(l.val); l=l.next; } } public ListNode swapPairs(ListNode h1){ ListNode p =h1; while(p!=null && p.next!=null ){ //swap int tmp = p.val; p.val = p.next.val; p.next.val = tmp; p=p.next.next; } return h1; } }
相关文章推荐
- Populating Next Right Pointers in Each Node
- struct inode 和 struct file
- LeetCode题解——Swap Nodes in Pairs
- Populating Next Right Pointers in Each Node II
- Delete Node in a Linked List
- 我的第一个Node web程序
- Populating Next Right Pointers in Each Node
- Node.js笔记(十)Nodejs与DOM操作
- 【node.js】windows安装express:'express' 不是内部或外部命令,也不是可运行的程序或批处理文件。
- nodejs npm常用命令
- 最新nodejs的开发学习实战(1)从一个博客开始
- ask question on freenode IRC
- Node.Js —— PM2介绍
- NodeJs服务器管理
- Reverse Nodes in k-Group
- nodejs高大上的部署方式-PM2
- Node.js 究竟是什么?
- [leetcode-25]Reverse Nodes in k-Group(C)
- NameNode,SecondaryNameNode与Datanode文件详解
- Swap Nodes in Pairs