交换链表中的节点

给你链表的头节点 head 和一个整数 k 。

交换 链表正数第 k 个节点和倒数第 k 个节点的值后,返回链表的头节点(链表 从 1 开始索引)。

示例 1:

输入:head = [1,2,3,4,5], k = 2

输出:[1,4,3,2,5]

示例 2:

输入:head = [7,9,6,6,7,8,3,0,9,5], k = 5

输出:[7,9,6,6,8,7,3,0,9,5]

示例 3:

输入:head = [1], k = 1

输出:[1]

示例 4:

输入:head = [1,2], k = 1

输出:[2,1]

示例 5:

输入:head = [1,2,3], k = 2

输出:[1,2,3]

提示:

链表中节点的数目是 n

1 <= k <= n <= 105

0 <= Node.val <= 100

python 复制代码
# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def swapNodes(self, head: Optional[ListNode], k: int) -> Optional[ListNode]:
        n,s,f = head,head,head
        recode = 1
        while n:
            if recode < k:
                s = s.next
            if recode >k :
                f = f.next

            n = n.next
            recode +=1
        f.val,s.val = s.val,f.val
        return head
        

怎么能有这么聪明的解法,一次遍历 找到两个节点

膜拜大佬

相关推荐
计算机安禾27 分钟前
【数据结构与算法】第35篇:归并排序与基数排序
c语言·数据结构·vscode·算法·排序算法·哈希算法·visual studio
专注API从业者30 分钟前
淘宝商品详情 API 与爬虫技术的边界:合法接入与反爬策略的技术博弈
大数据·数据结构·数据库·爬虫
汀、人工智能1 小时前
[特殊字符] 第66课:跳跃游戏
数据结构·算法·数据库架构·图论·bfs·跳跃游戏
汀、人工智能1 小时前
[特殊字符] 第70课:加油站
数据结构·算法·数据库架构·图论·bfs·加油站
favour_you___1 小时前
2026_4_8算法练习题
数据结构·c++·算法
汀、人工智能2 小时前
[特殊字符] 第57课:搜索旋转排序数组
数据结构·算法·数据库架构·图论·bfs·搜索旋转排序数组
夏乌_Wx2 小时前
剑指offer | 2.4数据结构相关题目
数据结构·c++·算法·剑指offer·c/c++
minji...3 小时前
Linux 线程同步与互斥(二) 线程同步,条件变量,pthread_cond_init/wait/signal/broadcast
linux·运维·开发语言·jvm·数据结构·c++
游乐码4 小时前
C#Queue
数据结构·游戏·c#
汀、人工智能5 小时前
[特殊字符] 第67课:跳跃游戏II
数据结构·算法·数据库架构·图论·bfs·跳跃游戏ii