LeetCode-24-Swap Nodes in Pairs
算法描述:
Given a linked list, swap every two adjacent nodes and return its head.
Example:
Given1->2->3->4
, you should return the list as2->1->4->3
.
Note:
- Your algorithm should use only constant extra space.
- You may not modify the values in the list's nodes, only nodes itself may be changed.
解题思路:
数据结构题,采用一快一慢两个指针,画出图就能完成,注意的是对快指针的判断。
ListNode* swapPairs(ListNode* head) { ListNode* dup = new ListNode(-1); dup->next = head; ListNode* cur = dup; ListNode* fast = dup; ListNode* slow = dup; while(fast-> next !=nullptr && fast->next->next!=nullptr){ fast = fast->next->next; slow = slow->next; ListNode* temp = fast->next; cur->next = fast; fast->next = slow; slow->next = temp; fast = slow; cur=slow; } return dup->next; }