Leetcode Swap Nodes in Pairs 交换链表的节点对
2015-05-08 20:43
253 查看
题目:
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.
分析:
1. 首先考虑链表是空或者只有一个节点,直接返回链表。2. 链表的头节点一定会发生改变,因此使用dummy node。
3. 需要三个指针,一个指向需要交换的节点对的前一个节点,一个指向第一个需要交换的节点,最后一个指向第二个需要交换的节点
Java代码实现:
/*** 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) {
if(head==null || head.next==null)
return head;
ListNode dummy = new ListNode(0);
ListNode node = dummy;
ListNode first = head;
ListNode second = head.next;
while(second!=null)
{
ListNode temp = second.next;
node.next = second;
node.next.next = first;
node = node.next.next;
node.next = temp;
first = node.next;
if(first!=null)
second = first.next;
else
second = first;
}
return dummy.next;
}
}
相关文章推荐
- 两两交换链表中的节点
- LintCode:交换链表当中两个节点
- LeetCode24 Swap Nodes in Pairs 成对交换链表节点
- 两两交换链表中的节点
- LintCode-两两交换链表中的节点
- 两两交换链表中的节点
- 交换链表中的相邻节点
- 两两交换链表中的节点
- Swap Nodes in Pairs 链表两两交换节点@LeetCode
- 链表排序交换节点为什么还得单独交换next指针?
- 两两交换链表中的节点
- 两两交换链表中的节点
- 两两交换链表中的节点
- lintcode 451 两两交换链表中的节点
- LintCode:交换链表当中两个节点
- 451 - 两两交换链表中的节点
- 交换链表当中两个节点-LintCode
- 交换链表当中两个节点
- Leetcode #24. Swap Nodes in Pairs 链表节点交换 解题报告
- 两两交换链表中的节点