题目
原题在此
解析
这次的题是交换val, 不是交换node, 所以更简单.
两个指针p1, p2
, p1先走k步, 然后p1和p2一起走, 当p1走到头的时候, p2就是倒数第k个了
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
class Solution { public: ListNode* swapNodes(ListNode* head, int k) { ListNode holder(0, head); ListNode* foo = head, *bar = head; for(int i = 0; i < k; i++) { foo = foo -> next; } while(foo){ foo = foo -> next; bar = bar -> next; } foo = &holder; for(int i = 0; i < k; i++) { foo = foo -> next; } swap(foo->val, bar->val); return holder.next; } };
|