赞
踩
-----持续更新蓝桥杯入门系列算法实例--------
如果你也喜欢Java和算法,欢迎订阅专栏共同学习交流!
你的点赞、关注、评论、是我创作的动力!
-------希望我的文章对你有所帮助--------
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。
示例 1:
输入:head = [1,2,3,4] 输出:[2,1,4,3]
示例 2:
输入:head = [] 输出:[]
示例 3:
输入:head = [1] 输出:[1]
本题有较为简洁的递归写法,有兴趣可以去了解一下,由于本人尚未完全理解此题递归的精髓,因此使用常规解法来解题。
1、使用虚拟头节点,指向head头节点。
2、引入一个中间变量,用于临时存储下一组进行反转的节点。
3、引入First、Second节点,实现两个节点指向的反转。
4、将Second节点指向虚拟头节点,First节点指向Second节点。
5、再将First节点指向临时节点。
6、重复以上步骤即可得到两两反转,最后返回即可。
- public ListNode swapPairs(ListNode head) {
- ListNode pHead = new ListNode(-1);
- pHead.next = head;
- ListNode temp;
- ListNode Fnode;
- ListNode Snode;
- ListNode cur = pHead;
- while (cur.next != null && cur.next.next != null) {
- temp = cur.next.next.next;
- Fnode = cur.next;
- Snode = cur.next.next;
- cur.next=Snode;
- Snode.next=Fnode;
- Fnode.next=temp;
- cur=Fnode;
- }
- return pHead.next;
- }
发文不易,恳请大佬们高抬贵手!
点赞:随手点赞是种美德,是大佬们对于本人创作的认可!
评论:往来无白丁,是你我交流的的开始!
收藏:愿君多采撷,是大佬们对在下的赞赏!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。