您的位置:首页 > Web前端 > Node.js

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 
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;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: