用指標交換兩個數 24 兩兩交換鍊錶中的節點

2021-10-11 14:03:59 字數 1580 閱讀 9980

給定乙個鍊錶,兩兩交換其中相鄰的節點,並返回交換後的鍊錶。

你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換。

示例1 :

輸入:head = [1,2,3,4]

輸出:[2,1,4,3]

示例 2:

輸入:head = 

輸出:

示例 3:

輸入:head = [1]

輸出:[1]

本題可以分為遞迴方法和迭代方法。首先來看遞迴方法,我們需要明確每一步做什麼,無非就是兩個節點顛倒順序,假設當前節點為head,下乙個節點為newnode = head.next,每次交換完成後,newnode成為佇列的第乙個節點,head成為佇列的第二個節點。判斷結束的條件就是當前節點為空或者當前節點的下乙個節點為空。

具體**如下:

/**

* definition for singly-linked list.

* public class listnode

* listnode(int val)

* listnode(int val, listnode next)

* }*/class solution

}

這道題用遞迴有點繞,我們來看下迭代的方式如何操作。一看到題目最直觀的想法就是兩個指標指向當前節點和下乙個節點,然後交換,指標指向下一對進行交換即可。這裡我們需要用到乙個啞結點和乙個臨時指標(如果不額外加入會造成鍊錶連不上的情況)。讓dummy.next = head; temp = dummy,首先temp.next.next = q,即讓temp的下乙個節點為交換元素中的第二個位置上的元素q,這樣交換完成後q變到第乙個位置,p變為第二個位置,而dummy指向了q,即將鍊錶連線了起來,最後讓temp指向p即可。

具體**如下:

/**

* definition for singly-linked list.

* public class listnode

* listnode(int val)

* listnode(int val, listnode next)

* }*/class solution

return dummy.next;}}

兩兩交換鍊錶節點24

方法一 迭代 我們把鍊錶分為兩部分,即奇數節點為一部分,偶數節點為一部分,a 指的是交換節點中的前面的節點,b 指的是要交換節點中的後面的節點。在完成它們的交換,我們還得用 prevnode 記錄 a 的前驅節點。演算法 1.firstnode 即 a 和 secondnode 即 b 分別遍歷偶數...

24 兩兩交換鍊錶中的節點

給定乙個鍊錶,兩兩交換其中相鄰的節點,並返回交換後的鍊錶。示例 給定 1 2 3 4,你應該返回 2 1 4 3.說明 你的演算法只能使用常數的額外空間。你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換。要求從前往後,兩兩交換,意味著每一組的第二個指向的下乙個也應該是交換過了的,自然想到...

24 兩兩交換鍊錶中的節點

給定乙個鍊錶,兩兩交換其中相鄰的節點,並返回交換後的鍊錶。你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換。給定 1 2 3 4,你應該返回 2 1 4 3.definition for singly linked list.class listnode def init self,x ...