24.Swap Nodes in Pairs
===
###### tags: `Medium`,`Linked List`
[24. Swap Nodes in Pairs](https://leetcode.com/problems/swap-nodes-in-pairs/)
### 題目描述
Given a linked list, swap every two adjacent nodes and return its head. You must solve the problem without modifying the values in the list's nodes (i.e., only nodes themselves may be changed.)
### 範例
**Example 1:**
![](https://assets.leetcode.com/uploads/2020/10/03/swap_ex1.jpg =80%x)
```
Input: head = [1,2,3,4]
Output: [2,1,4,3]
```
**Example 2:**
```
Input: head = []
Output: []
```
**Example 3:**
```
Input: head = [1]
Output: [1]
```
**Constraints**:
* The number of nodes in the list is in the range `[0, 100]`.
* 0 <= `Node.val` <= 100
### 解答
#### Python
```python=
class Solution:
def swapPairs(self, head: Optional[ListNode]) -> Optional[ListNode]:
# If the list has no node or has only one node left.
if not head or not head.next:
return head
first_node = head
second_node = head.next
# Swapping
first_node.next = self.swapPairs(second_node.next)
second_node.next = first_node
# Now the head is second node
return second_node
```
> [name=Ron Chen][time=Tue, May 16, 2023]
#### Javascript
```javascript=
function swapPairs(head) {
if (!head || !head.next) return head;
const temp = head.next;
head.next = swapPairs(temp.next);
temp.next = head;
return temp;
}
```
> [name=Marsgoat][time=Tue, May 16, 2023]
### Reference
[回到題目列表](https://hackmd.io/@Marsgoat/leetcode_every_day)