交换链表中的节点

给你链表的头节点 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
        

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

膜拜大佬

相关推荐
达文汐20 小时前
【困难】力扣算法题解析LeetCode332:重新安排行程
java·数据结构·经验分享·算法·leetcode·力扣
一匹电信狗20 小时前
【LeetCode_21】合并两个有序链表
c语言·开发语言·数据结构·c++·算法·leetcode·stl
执着25920 小时前
力扣hot100 - 234、回文链表
算法·leetcode·链表
Gorgous—l20 小时前
数据结构算法学习:LeetCode热题100-多维动态规划篇(不同路径、最小路径和、最长回文子串、最长公共子序列、编辑距离)
数据结构·学习·算法
一条大祥脚21 小时前
26.1.26 扫描线+数论|因子反演+子序列计数|树套树优化最短路
数据结构·算法
踩坑记录1 天前
leetcode hot100 23. 合并 K 个升序链表 hard 分治 迭代
leetcode·链表
李老师讲编程1 天前
C++信息学奥赛练习题-杨辉三角
数据结构·c++·算法·青少年编程·信息学奥赛
期末考复习中,蓝桥杯都没时间学了1 天前
力扣刷题13
数据结构·算法·leetcode
会飞的战斗鸡1 天前
JS中的链表(含leetcode例题)
javascript·leetcode·链表
多米Domi0111 天前
0x3f 第48天 面向实习的八股背诵第五天 + 堆一题 背了JUC的题,java.util.Concurrency
开发语言·数据结构·python·算法·leetcode·面试