【LeetCode】24. 两两交换链表中的节点
2023-09-14 09:13:25 时间
1. 题目
2. 分析
用了两种思路解决这个问题,这种题如果出现在面试题中,那有点儿悬了。实在是不熟练。
2.1 方法一
step1. 将链表分割成两串链表,其中奇数位的为一串,偶数下标位为一串。
step2. 再将链表交错合并
2.2 方法二
直接暴力倒转,这种方法更简单。
3. 代码
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def swapPairs(self, head: ListNode) -> ListNode:
if head is None:
return
if head.next is None:
return head
start = head.next
pre = None
while(head):
# 如果满足条件说明可以交换
if head.next is not None:
tmp_2 = head.next.next # 下次的head
tmp_1 = head.next
tmp_1.next = head
if pre is not None:
pre.next = tmp_1
pre = head
head.next = tmp_2
head = tmp_2
else:
if pre is not None:
pre.next = head
else: # 说明只有一个节点
pre = head
head = head.next
return start # 返回头节点
相关文章
- Leetcode——2. 两数相加
- Java实现 LeetCode 817 链表组件(暴力)
- Java实现 LeetCode 725 分隔链表(暴力)
- Java实现 LeetCode 706 设计哈希映射(数组+链表)
- Java实现 LeetCode 504 七进制数
- Java实现 LeetCode 440 字典序的第K小数字
- Java实现 LeetCode 237 删除链表中的节点
- Java实现 LeetCode 148 排序链表
- Java实现 LeetCode 82 删除排序链表中的重复元素 II(二)
- Java实现 LeetCode 24 两两交换链表中的节点
- Java实现 LeetCode 21 合并两个有序链表
- Java实现 LeetCode 19删除链表的倒数第N个节点
- Java实现 LeetCode 19删除链表的倒数第N个节点
- LeetCode(83): 删除排序链表中的重复元素
- LeetCode(15): 每k个一组翻转链表
- LeetCode(24): 两两交换链表中的节点
- LeetCode(19):删除链表的倒数第N个节点
- 每日一道 LeetCode (17):爬楼梯
- [LeetCode] Reverse Linked List(递归与非递归反转链表)
- 【数组&双指针】LeetCode 142. 环形链表 II【中等】
- LeetCode(19):删除链表的倒数第N个节点
- Leetcode.剑指 Offer II 023. 两个链表的第一个重合节点
- 【LeetCode 24】两两交换链表中的节点
- 【LeetCode Python实现】21. 合并两个有序链表(简单)
- Leetcode 234. 回文链表
- [LeetCode] 19. 删除链表的倒数第N个节点 ☆☆☆
- leetcode 24. 两两交换链表中的节点 js实现
- leetcode 1019. 链表中的下一个更大节点 js实现
- 【Leetcode刷题Python】92.反转链表II
- 【Mac系统】Vscode使用LeetCode插件报错‘leetcode.toggleLeetCodeCn‘ not found
- LeetCode 382. 链表随机节点
- LeetCode 817. 链表组件
- 【LeetCode】 82.删除排序链表中的重复元素II