难度:Medium
描述:
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.
思路:很简单一题,两个连个链表节点换位置,只要对边界情况做下判断就行,具体怎样操作可以画图来解决,很直观。
代码:
class Solution {
public:
ListNode* swapPairs(ListNode* head) {
if (head == NULL || head->next == NULL) return head;
ListNode* back = NULL;
ListNode* p1 = head;
ListNode* p2 = head->next;
ListNode* result = head->next;
while(true){
p1->next = p2->next;
p2->next = p1;
if (back != NULL) back->next = p2;
back = p1;
p1 = p1->next;
if (p1 == NULL) break;
p2 = p1->next;
if (p2 == NULL) break;
}
return result;
}
};
本文介绍了一种算法,用于交换链表中每两个相邻节点的位置。该算法仅使用常数空间复杂度,并且不修改列表中的值,只改变节点本身。通过实例展示了1->2->3->4变为2->1->4->3的过程。
358

被折叠的 条评论
为什么被折叠?



