中等 LeetCode 24 兩兩交換鍊錶中的節點

2021-10-06 06:56:23 字數 811 閱讀 2935

題目

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

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

示例解題思路及**

1. 思路

兩兩一對的考慮鍊錶中的節點,假設左邊節點為left,右邊節點為right,我們只要使left指向right.next,然後使right指向left,就可以完成這兩個節點的交換。(總的思路就是改變兩個節點的指向,實現節點交換的目的) 當left為空或者right為空,就是說最後不剩下節點或者只剩下乙個節點,演算法就可以終止了。

還可以用遞迴來考慮:

遞迴實際上就是將大問題不斷分解成小問題來解決,一直遞迴到最底層,再不斷返回每一層的結果。我們每一層都返回交換完的子鍊錶,呼叫遞迴單元來實現子鍊錶交換,終止條件就是當最後節點為空或者最後只剩乙個節點。

2. **

第一種方法:

if (head == null || head.next == null)

var dummy = new listnode(null);

dummy.next = head;

var cur = dummy;

while(cur.next != null && cur.next.next != null)

return dummy.next;};

遞迴 if (head == null || head.next == null)

var end = head.next;

end.next = head;

return end;

};

LeetCode 24兩兩交換鍊錶的節點

給定乙個鍊錶,兩兩交換其中相鄰的節點,並返回交換後的鍊錶。你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換。示例 給定 1 2 3 4,你應該返回 2 1 4 3.class solution listnode next head.next head.next next.next 指向下...

leetcode24 兩兩交換鍊錶中的節點

給定乙個鍊錶,兩兩交換其中相鄰的節點,並返回交換後的鍊錶。示例 給定 1 2 3 4,你應該返回 2 1 4 3.說明 你的演算法只能使用常數的額外空間。你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換。注意while裡tmp1和tmp2已經交換了,所以node tmp1 definit...

leetcode 24 兩兩交換鍊錶中的節點

給定乙個鍊錶,兩兩交換其中相鄰的節點,並返回交換後的鍊錶。示例 給定 1 2 3 4,你應該返回 2 1 4 3.複製 說明 listnode definition for singly linked list.type listnode struct func head listnode list...