Swap Nodes in Pairs:交换链表数组相邻元素的值
2017-12-06 08:22
459 查看
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.
思路:从头遍历,每两个为一组,难点在于要注意null节点的判断,注意每组的第一个为空时就可以返回了。
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode swapPairs(ListNode head) {
ListNode H = new ListNode(0);
H.next = head;
ListNode l , r;
if(head==null){
return head;
}else{
l = head;
}
if(head.next==null){
return head;
}else{
r = head.next;
}
while(l!=null&&r!=null){
int temp = l.val;
l.val = r.val;
r.val = temp;
System.out.println(l.val+" "+r.val);
l = (r.next!=null)?r.next:null;
if(l==null){
return H.next;
}
r = (l.next!=null)?l.next:null;
}
return H.next;
}
}
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.
思路:从头遍历,每两个为一组,难点在于要注意null节点的判断,注意每组的第一个为空时就可以返回了。
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode swapPairs(ListNode head) {
ListNode H = new ListNode(0);
H.next = head;
ListNode l , r;
if(head==null){
return head;
}else{
l = head;
}
if(head.next==null){
return head;
}else{
r = head.next;
}
while(l!=null&&r!=null){
int temp = l.val;
l.val = r.val;
r.val = temp;
System.out.println(l.val+" "+r.val);
l = (r.next!=null)?r.next:null;
if(l==null){
return H.next;
}
r = (l.next!=null)?l.next:null;
}
return H.next;
}
}
相关文章推荐
- 交换单链表中相邻的两个元素 Swap Nodes in Pairs
- LeetCode | Swap Nodes in Pairs(将链表中的元素两两交换)
- 【leetcode】24. Swap Nodes in Pairs - 成对交换链表元素
- [leetcode] 24 Swap Nodes in Pairs(交换链表相邻结点)
- Swap Nodes in Pairs 链表交换相邻的节点
- Swap Nodes in Pairs(交换链表相邻的两个结点)
- Swap Nodes in Pairs --成对交换链表节点(重重重)
- LeetCode OJ 之 Swap Nodes in Pairs (交换成对相邻结点的值)
- LeetCode - 24 - Swap Nodes in Pairs(交换链表结点)
- 451. 两两交换链表中的节点(swap-nodes-in-pairs)(c++)----lintcode面试题之链表
- Leetcode:Swap Nodes in Pairs 单链表相邻两节点逆置
- 49. leetCode24: Swap Nodes in Pairs【两两交换列表元素】
- Swap Nodes in Pairs 链表两两交换节点@LeetCode
- swap-nodes-in-pairs(单链表交换点对)
- Leetcode:Swap Nodes in Pairs 单链表相邻两节点逆置
- 【链表&交换邻节点】Swap Nodes in Pairs
- LeetCode Swap Nodes in Pairs交换链表中的两个节点
- (Java) LeetCode 24. Swap Nodes in Pairs —— 两两交换链表中的节点
- Reverse Nodes In K Group,将链表每k个元素为一组进行反转---特例Swap Nodes in Pairs,成对儿反转
- (LeetCode)Swap Nodes in Pairs --- 交换两个相邻的结点