LeetCode-Swap Nodes in Pairs
2017-09-29 20:34
393 查看
题目:
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.
解读:交还给定链表中相邻的两个节点,不得修改节点的值。
注意点:left为左节点,right为右节点,temp为左节点的前一个节点(如果有的话)。left指向right的下一个节点,right指向left,temp(若有)指向right。
temp = left, left = left->next; right = left->next,
当只剩下一个节点或者没有节点的时候结束。
代码:/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* swapPairs(ListNode* head) {
if(head == NULL) return head;
if(head->next == NULL) return head;
ListNode* left = head;
ListNode* right = left->next;
ListNode* temp;
ListNode* answer = head;
int flag = 0;
while(right != NULL) {
left->next = right->next;
right->next = left;
if(flag == 0) {
answer = right;
temp = left;
flag = 1;
} else {
temp->next = right;
temp = left;
}
if(left->next == NULL) break;
if((left->next)->next != NULL){
left = left->next;
right = left->next;
} else break;
}
return answer;
}
};
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.
解读:交还给定链表中相邻的两个节点,不得修改节点的值。
注意点:left为左节点,right为右节点,temp为左节点的前一个节点(如果有的话)。left指向right的下一个节点,right指向left,temp(若有)指向right。
temp = left, left = left->next; right = left->next,
当只剩下一个节点或者没有节点的时候结束。
代码:/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* swapPairs(ListNode* head) {
if(head == NULL) return head;
if(head->next == NULL) return head;
ListNode* left = head;
ListNode* right = left->next;
ListNode* temp;
ListNode* answer = head;
int flag = 0;
while(right != NULL) {
left->next = right->next;
right->next = left;
if(flag == 0) {
answer = right;
temp = left;
flag = 1;
} else {
temp->next = right;
temp = left;
}
if(left->next == NULL) break;
if((left->next)->next != NULL){
left = left->next;
right = left->next;
} else break;
}
return answer;
}
};
相关文章推荐
- [leetcode]Swap Nodes in Pairs
- Leetcode 24 :Swap Nodes in Pairs
- LeetCode: Swap Nodes in Pairs
- LeetCode 24. Swap Nodes in Pairs(交换节点)
- [leetcode刷题系列]Swap Nodes in Pairs
- leetcode - Swap Nodes in Pairs
- Leetcode:Swap Nodes in Pairs 单链表相邻两节点逆置
- LeetCode -- Swap Nodes in Pairs
- LeetCode Swap Nodes in Pairs题目的一种简洁解法
- Leetcode -- swap nodes in pairs
- Leetcode||24.Swap Nodes in Pairs
- LeetCode 24. Swap Nodes in Pairs
- Leetcode-Swap Nodes in Pairs
- LeetCode_Swap Nodes in Pairs
- LeetCode----Swap Nodes in Pairs
- 【leetcode】24. Swap Nodes in Pairs
- leetcode 24 Swap Nodes in Pairs C++
- [LeetCode]Swap Nodes in Pairs
- LeetCode 24 Swap Nodes in Pairs
- <LeetCode OJ> 24. Swap Nodes in Pairs