2020-10-13 打卡題-鏈表森爽,節(jié)點(diǎn)交換
給定一個(gè)鏈表,兩兩交換其中相鄰的節(jié)點(diǎn)钧萍,并返回交換后的鏈表狈邑。
你不能只是單純的改變節(jié)點(diǎn)內(nèi)部的值,而是需要實(shí)際的進(jìn)行節(jié)點(diǎn)交換碘菜。示例 1:
輸入:head = [1,2,3,4]
輸出:[2,1,4,3]示例 2:
輸入:head = []
輸出:[]示例 3:
輸入:head = [1]
輸出:[1]提示:
鏈表中節(jié)點(diǎn)的數(shù)目在范圍 [0, 100] 內(nèi)
0 <= Node.val <= 100來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/swap-nodes-in-pairs
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有凹蜈。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處忍啸。
- 題解:
public class SwapPairs {
public ListNode swapPairs(ListNode head) {
if(head == null || head.next == null) return head;
// 引入多余點(diǎn)輔助交換
ListNode addNode = new ListNode(0);
addNode.next = head;
ListNode temp = addNode;
while(temp.next != null && temp.next.next !=null){
ListNode n1 = temp.next;
ListNode n2 = temp.next.next;
temp.next = n2; // 引入點(diǎn)指向結(jié)點(diǎn)2
n1.next = n2.next; // 結(jié)點(diǎn)1指向結(jié)點(diǎn)2的后續(xù)
n2.next = n1; // 結(jié)點(diǎn)2指向結(jié)點(diǎn)1
temp = n1; // 引入點(diǎn)賦值為節(jié)點(diǎn)1仰坦,繼續(xù)后續(xù)操作
}
return addNode.next;
}
}