摘要:指針為,我們選擇的兩個(gè)結(jié)點(diǎn)是和。要注意循環(huán)的邊界條件,這兩個(gè)結(jié)點(diǎn)不能為空。主要思路是先用和兩個(gè)新結(jié)點(diǎn)去保存和兩個(gè)結(jié)點(diǎn)。完成交換之后,連接和,并讓前進(jìn)至此時(shí)的結(jié)點(diǎn)。
Problem
Given a linked list, swap every two adjacent nodes and return its head.
ExampleGiven 1->2->3->4, you should return the list as 2->1->4->3.
Note指針為p,我們選擇swap的兩個(gè)結(jié)點(diǎn)是p.next和p.next.next。要注意while循環(huán)的邊界條件,這兩個(gè)結(jié)點(diǎn)不能為空。主要思路是先用next和temp兩個(gè)新結(jié)點(diǎn)去保存p.next.next.next和p.next兩個(gè)結(jié)點(diǎn)。完成交換之后,連接temp和next,并讓p前進(jìn)至此時(shí)的temp結(jié)點(diǎn)。
Solutionpublic class Solution { public ListNode swapPairs(ListNode head) { if (head == null) return head; ListNode dummy = new ListNode(0); dummy.next = head; ListNode p = dummy; while (p.next != null && p.next.next != null) { ListNode next = p.next.next.next; ListNode temp = p.next; p.next = p.next.next; p.next.next = temp; temp.next = next; p = temp; } return dummy.next; } }
OR
public class Solution { public ListNode swapPairs(ListNode head) { if (head == null || head.next == null) return head; ListNode dummy = new ListNode(0); dummy.next = head; ListNode cur = dummy; while (cur.next != null && cur.next.next != null) { ListNode n1 = cur.next; ListNode n2 = cur.next.next; cur.next = n2; n1.next = n2.next; n2.next = n1; cur = n1; } return dummy.next; } }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/65431.html
摘要:建立結(jié)點(diǎn),指向可能要對(duì)進(jìn)行操作。找到值為和的結(jié)點(diǎn)設(shè)為,的前結(jié)點(diǎn)若和其中之一為,則和其中之一也一定為,返回頭結(jié)點(diǎn)即可。正式建立,,以及對(duì)應(yīng)的結(jié)點(diǎn),,然后先分析和是相鄰結(jié)點(diǎn)的兩種情況是的前結(jié)點(diǎn),或是的前結(jié)點(diǎn)再分析非相鄰結(jié)點(diǎn)的一般情況。 Problem Given a linked list and two values v1 and v2. Swap the two nodes in th...
摘要:三指針法復(fù)雜度時(shí)間空間思路基本的操作鏈表,見注釋。注意使用頭節(jié)點(diǎn)方便操作頭節(jié)點(diǎn)。翻轉(zhuǎn)后,開頭節(jié)點(diǎn)就成了最后一個(gè)節(jié)點(diǎn)。 Swap Nodes in Pairs Given a linked list, swap every two adjacent nodes and return its head. For example, Given 1->2->3->4, you should ...
摘要:題目要求翻譯過來就是將鏈表中相鄰兩個(gè)節(jié)點(diǎn)交換順序,并返回最終的頭節(jié)點(diǎn)。思路這題的核心解題思路在于如何不占用額外的存儲(chǔ)空間,就改變節(jié)點(diǎn)之間的關(guān)系。 題目要求 Given a linked list, swap every two adjacent nodes and return its head. For example, Given 1->2->3->4, you should r...
摘要:最后返回頭節(jié)點(diǎn)。同時(shí)題目要求只能占用常數(shù)空間,并且不能改變節(jié)點(diǎn)的值,改變的是節(jié)點(diǎn)本身的位置。翻轉(zhuǎn)是以兩個(gè)節(jié)點(diǎn)為單位的,我們新聲明一個(gè)節(jié)點(diǎn)表示當(dāng)前操作到的位置。每次操作結(jié)束,將指針后移兩個(gè)節(jié)點(diǎn)即可。執(zhí)行操作前要確定操作的兩個(gè)節(jié)點(diǎn)不為空。 題目詳情 Given a linked list, swap every two adjacent nodes and return its head....
摘要:注意這里,只要走到第位 Swap Nodes in Pairs For example,Given 1->2->3->4, you should return the list as 2->1->4->3. Solution public class Solution { public ListNode swapPairs(ListNode head) { if...
閱讀 995·2021-11-23 09:51
閱讀 3487·2021-11-22 12:04
閱讀 2727·2021-11-11 16:55
閱讀 2957·2019-08-30 15:55
閱讀 3239·2019-08-29 14:22
閱讀 3362·2019-08-28 18:06
閱讀 1253·2019-08-26 18:36
閱讀 2139·2019-08-26 12:08