leetcode24 兩兩交換鍊錶中的節點

2021-09-20 15:36:17 字數 622 閱讀 7317

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

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

示例:

給定1->2->3->4, 你應該返回2->1->4->3.
使用遞迴來解決該題,主要就是遞迴的三部曲: 找終止條件:本題終止條件很明顯,當遞迴到鍊錶為空或者鍊錶只剩乙個元素的時候,沒得交換了,自然就終止了。

找返回值:返回給上一層遞迴的值應該是已經交換完成後的子鍊錶。 單次的過程:因為遞迴是重複做一樣的事情,所以從巨集觀上考慮,只用考慮某一步是怎麼完成的。

我們假設待交換的倆節點分別為head和next,next的應該接受上一級返回的子鍊錶(參考第2步)。就相當於是乙個含三個節點的鍊錶交換前兩個節點,

就很簡單了,想不明白的畫畫圖。

// 鍊錶為空或者鍊錶只剩乙個元素

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

listnode nextnode = head.next;

nextnode.next = head;

return nextnode; }

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...