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

2021-10-07 15:56:42 字數 1120 閱讀 2685

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

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

示例:給定 1->2->3->4, 你應該返回 2->1->4->3.

考慮兩個變數值交換的情況,引入中間變數temp,然後交換兩個變數的值。

變數 a,b

引入中間變數 temp

temp = a

a = b

b = temp

同理,引入中間變數temp,完成鍊錶節點的交換。

## 鍊錶的元素是連在一起的,a->b->c

## 所以在交換a,b後,應該為 b->a->c

## 所以不僅要保證a,b位置互換,a還要指向c

class solution:

p = listnode(0)

p.next = head

p1 = p # 加乙個頭節點

while p.next and p.next.next: # 保證有兩個可交換的節點

temp = p.next # 引入中間變數temp

p.next = p.next.next # b 換到 a前面

temp.next = p.next.next # a.next = c a指向c

p.next.next = temp # b.next = a b指向a

p = p.next.next # 從交換後a所在的位置繼續下一次交換

return p1.next

遞迴:遞迴體、遞迴終止條件。

# 沒有下乙個節點,或者只剩下乙個節點時,遞迴終止,返回當前節點。

# 兩個節點進行交換,a.next = b.next a->c a指向c

# 然後 b.next = a b指向a

# 返回b,因為每一次遞迴執行時,b都被換到了前面。

class solution:

if not head or not head.next:

return head

a = head

b = head.next

b.next = a

return b

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