【LeetCode:1721. 交换链表中的节点 + 链表】

LeetCode - 1721 - 交换链表中的节点 - Java - 两种解法 既已说到spring cloud alibaba,那对于整个微服务架构,如果想要进一步地向上提升自己,到底应该掌握哪些核心技能呢?就个人而言,对于整个微服务架构,像RPC、Dubbo、Spring Boot、Spring Cloud Alibaba、Docker、kubernetes、Spring Cloud Netflix、Service Mesh等这些都是最最核心的知识,架构师必经之路!下图,是自绘的微服务架构路线体系大纲,如果有还不知道自己该掌握些啥技术的朋友,可根据小编手绘的大纲进行一个参考。 阅读详情

在这里插入图片描述

🚀 算法题 🚀

🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀
🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨
🌲 作者简介:硕风和炜,优快云-Java领域优质创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享💎💎💎
🌲 恭喜你发现一枚宝藏博主,赶快收入囊中吧🌻
🌲 人生如棋,我愿为卒,行动虽慢,可谁曾见我后退一步?🎯🎯

🚀 算法题 🚀

在这里插入图片描述

在这里插入图片描述

🚩 题目链接

⛲ 题目描述

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

🌟 求解思路&实现代码&运行结果


⚡ 链表

🥦 求解思路
  1. 方法1:找到第k个节点和倒数第k个节点后,进行值交换。
  2. 方法2:交换节点。
  3. 有了基本的思路,接下来我们就来通过代码来实现一下。
🥦 实现代码
/**
 * Definition for singly-linked list.
 * public class ListNode {
 * int val;
 * ListNode next;
 * ListNode() {}
 * ListNode(int val) { this.val = val; }
 * ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode swapNodes(ListNode head, int k) {
        if (head == null)
            return null;
        int len = getLength(head);
        if(len % 2 != 0 && len / 2 + 1 == k){
            return head;
        }
        int first = k - 1, second = len - k + 1 - 1;
        ListNode pre1 = null;
        ListNode cur1 = head;
        while (first-- > 0) {
            pre1 = cur1;
            cur1 = cur1.next;
        }
        ListNode pre2 = null;
        ListNode cur2 = head;
        while (second-- > 0) {
            pre2 = cur2;
            cur2 = cur2.next;
        }
        ListNode next1 = cur1;
        if(cur1.next != cur2){
            next1 = cur1.next;
        }
        int value = cur1.val;
        cur1.val = cur2.val;
        cur2.val = value;
        return head;
    }

    public int getLength(ListNode node) {
        int cnt = 0;
        ListNode cur = node;
        while (cur != null) {
            cur = cur.next;
            cnt++;
        }
        return cnt;
    }
}
🥦 运行结果

在这里插入图片描述


💬 共勉

最后,我想和大家分享一句一直激励我的座右铭,希望可以与大家共勉!

在这里插入图片描述

在这里插入图片描述

GD32F4 Freertos实战:YT8512以太网PHY驱动移植与RMII模式配置详解 本文详细讲解了在GD32F470微控制器上,基于FreeRTOS系统移植YT8512以太网PHY驱动的实战过程。文章重点剖析了RMII时钟模式的选择与配置、PHY地址的正确设置,并针对YT8512芯片的寄存器差异,提供了核心驱动代码的适配方法与调试技巧,帮助开发者顺利完成从官方例程到特定硬件的驱动移植。 阅读详情

相关推荐

项目管理——14规划绩效域论文套路

规划绩效域论文套路

Flee Elf 1153

链表 leetcode 1721. 交换链表中的节点

题目内容 交换 链表正数第 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: 输

mogbox的博客 239

VC Spyglass CDC实战:从TCL脚本到SDC约束的完整避坑指南

本文是一份针对数字IC验证工程师的VC Spyglass CDC实战指南。文章详细阐述了从TCL脚本环境搭建、SDC约束编写到典型CDC违规(如SETUP_PORT_UNCONSTRAINED)诊断与修复的完整流程,旨在帮助读者高效避坑,深入理解工具逻辑,从而完成可靠的时钟域交叉验证。

go5gopher的博客 383

leetcode之链表十二: 1721-交换链表中的节点

原题:https://leetcode-cn.com/problems/swapping-nodes-in-a-linked-list/ 一、题目要求 给你链表的头节点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...

infi 235

保姆级教程:在摩尔线程MTT S80上快速部署Ollama运行DeepSeek R1模型(附性能测试)

本文提供了一份详细的保姆级教程,指导用户在摩尔线程MTT S80显卡上部署Ollama并运行DeepSeek R1模型。内容涵盖从驱动安装、Docker环境配置到模型拉取、性能测试的全流程,并分享了实测数据与优化技巧,旨在帮助开发者快速在国产GPU平台上实现高效的大语言模型推理。

weixin_29091837的博客 525

美团外卖mtgsig 1.2逆向工程:从补环境到签名生成全解析

本文深入解析了美团外卖mtgsig 1.2签名算法的逆向工程全流程。从环境检测原理与补环境实战入手,详细拆解了签名JSON中每个关键字段的生成逻辑,并重点剖析了核心签名a2的生成步骤,涉及设备指纹、MD5、AES加密等关键技术。最后提供了构建签名生成器的实践思路与常见坑点,为理解复杂风控体系提供了完整的技术视角。

weixin_29324401的博客 1756

【数据结构与算法 | 灵神题单 | 前后指针(链表)篇】力扣19, 61,1721

front节点提前走k - (k - (n + 1))步,然后front,last一起走,直到front==null为止,此时last刚好停在倒数第n+1个节点上。简单的一个数学问题,假设这条链表的长度是k,我们要删除的是链表的倒数第n个节点。last节点走几步才能到倒数第n+1个节点呢?k - (n + 1)步。要删除倒数第n个节点,其实就是要找到倒数第n+1个节点。给你一个链表,删除链表的倒数第。个结点,并且返回链表的头结点。你能尝试使用一趟扫描实现吗?不懂的画个图就很好的理解了。

2301_80912559的博客 690

TripoSR: Fast 3D Object Reconstruction from a Single Image 论文阅读

模型的主要参数,如变换器的层数、三平面的维度、NeRF模型的具体细节和主要训练配置,在表1中详细说明。TripoSR的算法流程结合了先进的数据处理、模型设计和训练技术,使其能够在不到0.5秒的时间内从单张图像中快速生成详细的3D网格。总体而言,TripoSR是一个强大的3D重建工具,它在速度和质量上都表现出色,但也需要考虑到其对计算资源的需求和在处理极端复杂场景时可能遇到的挑战。:通过精心策划的训练数据集和多样化的数据渲染技术,TripoSR提高了模型的泛化能力和对真实世界图像的适应性。

Christo的博客 1946

leetcode 1721.交换链表中的结点

把链表中的结点存入数组中,改变数组,再把数组的值返还给链表。4.把数组的值存入链表,并返回。

m0_54244065的博客 511

水与光的奇妙“切割之舞”:水导激光切割技术探秘

水导激光切割技术的诞生,是材料加工领域不断追求高精度、高质量加工的成果。传统激光切割技术在加工过程中,材料会因瞬间高温而产生热变形、热影响区大以及切割面粗糙等问题,这些弊端在对一些高精度、热敏性材料的加工中尤为突出 ,迫切需要一种新的技术来克服这些难题。水导激光切割技术的起源可以追溯到 20 世纪 80 年代。1986 年,德国公司 Aesculap-Werke AG 首次提出了将水流引入激光切割过程的创新想法,并制造出首代水导激光设备。不过,当时的技术尚处于雏形阶段,仅仅是在光纤出口添加了一小柱水流,激光

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 1673

Python爬虫反爬:突破Cloudflare 5秒盾(免费方案,小红书/知乎可用)

这套方案的核心优势是“真实模拟+免费无门槛”无需付费代理、无需复杂JS解密,仅用playwright模拟真实浏览器,即可突破Cloudflare 5秒盾;适配小红书、知乎、豆瓣等主流平台,修改配置即可复用;兼顾易用性和稳定性,新手也能快速上手,企业级场景可通过IP轮换、异步爬取进一步优化。“模拟人类行为到底”——Cloudflare的反爬本质是区分“机器”和“人类”,只要爬虫的浏览器指纹、行为特征与人类一致,就能稳定绕过限制。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 2881

LeetCode:链表(4)

LeetCode:链表(4) 文章目录LeetCode:链表(4)面试题 02.05. 链表求和445. 两数相加 II1721. 交换链表中的节点 面试题 02.05. 链表求和 思路1: 1.创建一个新链表,用来存储两个链表之和。 2.定义一个变量用来存储进位p 3.遍历两个链表,遍历链表全部内容 4.特殊情况(1):两个链表长度不一样; 解决:加上判断语句,当其中一个链表遍历完成后,就不继续让其前进。 l1, l2 = l1.next if l1 else None, l2.next if l2 e

qq_43710889的博客 150

RabbitMQ高级特性 - 生产者消息确认机制

为了保证信息 从生产者 发送到 队列,因此引入了生产者的消息确认机制.通过事务机制实现.通过发送确认机制(confirm 和 return)实现.因为事务机制比较消耗性能,在实际工作中用的也不多,因此这里主要介绍confirm 和 return机制来实现发送放的确认.a)confirm 确认模式如上图,confirm 确认模式主要保障于 生产者 到 交换机 的消息可靠性.如果 Exchange成功收到消息,那么 ConfirmCallback 这个回调 ack 参数就为true。

CYK_byte的博客 1886

找链表的倒数第 k 个节点

题目描述: 代码如下: /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: int kthToLast(ListNode* head, int k) { int coun

FYPPPP的博客 175

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

4.20算法题

然后进行k是否合法的判断。如果k合法,我们就可以得到前节点位置为k,后节点位置为len-k+1,接着我们用两个for循环把指针p和q移动到正确的位置,把两个节点的值进行交换就可以了。

2401_89605914的博客 888

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

leetcode 耗时100 1721. Swapping Nodes in a Linked List

Problem:计算长度的,然后拿到两个node的pre, now, next,若n - k < k -1则令k = n- k + 1特殊情况是k= 1,和now2 == next1交换两者的数值就可以了。

邹九的个人博客 176

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Leetcode刷题 2021.01.16

Leetcode刷题 2021.01.16Leetcode1721 交换链表中的节点Leetcode1451 重新排列句子中的单词 Leetcode1721 交换链表中的节点 给你链表的头节点 head 和一个整数 k 。 交换 链表正数第 k 个节点和倒数第 k 个节点的值后,返回链表的头节点(链表 从 1 开始索引)。 今天一天都在论文预答辩,实在没什么时间刷题了。随便找了两道水题做了,明天再说吧。今天的每日一题也好难,就算知道并查集也做不出来。面试选手就直接CV了。 链表题还是一样的问题,考虑边界,一

weixin_43447128的博客 215

【Leetcode刷题篇】- Leetcode1721 交换链表中的节点

给你链表的头节点 head 和一个整数 k 。 交换 链表正数第 k 个节点和倒数第 k 个节点的值后,返回链表的头节点(链表 从 1 开始索引)。 示例 1: 输入:head = [1,2,3,4,5], k = 2 输出:[1,4,3,2,5] /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} *

Mind_programmonkey的博客 384

LeetCode——1721.交换链表中的节点

方法一:好理解,但是需要遍历三次链表 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val; this..

qq_37975919的博客 195

【力扣】1721. 交换链表中的节点

题意理解 给定一个链表,和一个整数k,交换第k个链表节点和倒数第k个链表节点 问题分析 先遍历一遍得到长度n 再从头到尾遍历到第k-1个节点,记录下来 再从头到尾遍历到第n-k个节点,记录下来 交换第k个节点值和第n-k+1个节点的值。 其他 题目不难,但是如果不交换值而是交换节点,就很烦。 链接 https://leetcode-cn.com/problems/swapping-nodes-in-a-linked-list/ /** * Definition for singly

xiexie1357的专栏 211

leetcode 1721. 交换链表中的节点

可以考虑使用两次遍历,第一次遍历找到第一个交换节点,同时也统计出链表的节点个数,第二次遍历利用链表的节点个数得到第二个交换节点,最后交换两个节点的值即可。具体思路为:初始化first指针为NULL,last指针指向head链表,遍历原链表的节点,只要当前节点数小于或者等于k,first=当前的节点;链表正数第 k 个节点和倒数第 k 个节点的值后,返回链表的头节点(链表。输入:head = [1,2,3,4,5], k = 2。输出:[1,4,3,2,5]

坚持不懈的大白的博客 219

leetcode1721. 交换链表中的节点

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

少说,多做。 3006

Leetcode 108 交换链表中的节点

先精准定位两个目标节点,仅交换值而非节点,避免链表结构修改带来的节点丢失问题。关键技巧:用间隔 k 的快慢指针一次遍历找到倒数第 k 个节点,时间复杂度 O (n),空间复杂度 O (1),符合高效要求。细节注意:循环次数为k-1而非k,快慢指针同步移动的终止条件是,这些细节保证了定位的准确性。诶,原来直接交换这两个节点的val是可以的吗!?自己乱写/*** int val;* };++ i){解答错误!!!!

im_AMBER的博客 1088

python-leetcode-1721. 交换链表中的节点

可以使用双指针的方法找到正数第 k 个和倒数第 k 个节点,然后交换它们的值。

Lucy_wzw的博客 374

LeetCode 每日一题 2026/11/2-2026/11/8

记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步

AlphaTao的博客 179
上一篇: 【LeetCode:1553. 吃掉 N 个橘子的最少天数 + 递归】
下一篇: 【LeetCode:2244. 完成所有任务需要的最少轮数 + 二分】
硕风和炜
硕风和炜 优质创作者: Java技术领域 优质创作者: Java技术领域
博客等级 码龄7年 2万+粉丝 1024原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

硕风和炜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值