
题目
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
示例:
给定 1->2->3->4, 你应该返回 2->1->4->3.
解题思路
直接两两互换一直遍历到最后即可。
代码如下
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
|
class Solution { public ListNode swapPairs(ListNode head) { if(head == null) return null; ListNode p = head; ListNode q = head.next; ListNode pre = head; while(q != null) { p.next = q.next; q.next = p; //如果是第一个,则pre不用指向q,而且要更新head if(p == head) { head = q; pre = head.next; }else { pre.next = q; pre = p; } p = p.next; //q在p之后,如果p已经null则可以直接结束 if(p == null) break; q = p.next; } return head; } }
|
提交结果
成功
显示详情
执行用时 : 1 ms, 在Swap Nodes in Pairs的Java提交中击败了97.35% 的用户
内存消耗 : 33.4 MB, 在Swap Nodes in Pairs的Java提交中击败了98.47% 的用户
近期评论