衡陽衡南網(wǎng)站建設(shè)2022今天剛剛發(fā)生地震了
-----持續(xù)更新藍(lán)橋杯入門系列算法實(shí)例--------
如果你也喜歡Java和算法,歡迎訂閱專欄共同學(xué)習(xí)交流!
你的點(diǎn)贊、關(guān)注、評(píng)論、是我創(chuàng)作的動(dòng)力!
-------希望我的文章對(duì)你有所幫助--------
一、題目描述
給你一個(gè)鏈表,兩兩交換其中相鄰的節(jié)點(diǎn),并返回交換后鏈表的頭節(jié)點(diǎn)。你必須在不修改節(jié)點(diǎn)內(nèi)部的值的情況下完成本題(即,只能進(jìn)行節(jié)點(diǎn)交換)。
示例 1:
?
輸入:head = [1,2,3,4] 輸出:[2,1,4,3]
示例 2:
輸入:head = [] 輸出:[]
示例 3:
輸入:head = [1] 輸出:[1]
二、解題思路
? 本題有較為簡(jiǎn)潔的遞歸寫法,有興趣可以去了解一下,由于本人尚未完全理解此題遞歸的精髓,因此使用常規(guī)解法來解題。
1、使用虛擬頭節(jié)點(diǎn),指向head頭節(jié)點(diǎn)。
2、引入一個(gè)中間變量,用于臨時(shí)存儲(chǔ)下一組進(jìn)行反轉(zhuǎn)的節(jié)點(diǎn)。
3、引入First、Second節(jié)點(diǎn),實(shí)現(xiàn)兩個(gè)節(jié)點(diǎn)指向的反轉(zhuǎn)。
4、將Second節(jié)點(diǎn)指向虛擬頭節(jié)點(diǎn),First節(jié)點(diǎn)指向Second節(jié)點(diǎn)。
5、再將First節(jié)點(diǎn)指向臨時(shí)節(jié)點(diǎn)。
6、重復(fù)以上步驟即可得到兩兩反轉(zhuǎn),最后返回即可。
?
三、代碼
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;}
發(fā)文不易,懇請(qǐng)大佬們高抬貴手!
點(diǎn)贊:隨手點(diǎn)贊是種美德,是大佬們對(duì)于本人創(chuàng)作的認(rèn)可!
評(píng)論:往來無白丁,是你我交流的的開始!
收藏:愿君多采擷,是大佬們對(duì)在下的贊賞!
?
?