当前位置: 首页 > news >正文

面试热题(翻转k个链表)

给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。

k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。

你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。

       对链表进行k个节点的反转,首先我们要先知道链表的节点个数有多少个?才能知道我们需要翻转多少次?最后不够的节点是不需要翻转的

        int n=0;ListNode cur=head;//计算出列表的长度while(cur!=null){n++;cur=cur.next;}

为了使head节点不具有特殊性,我们经常会在head节点前加一个虚拟头结点dummyHead

 过程如下:

 序号12345的代码:

  for (int i =0; i <k; i++) {ListNode next=curNode.next;curNode.next=pre;pre=curNode;curNode=next;}

序号67的代码:

           ListNode next=p0.next;p0.next.next=curNode;p0.next=pre;p0=next;

       通过while的循环,就可以将k个节点进行反转,多指针这种方法也是比较好想的,但是就是比较容易绕,希望大家可以看着我画的图进行理解

源代码:

 public ListNode reverseKGroup(ListNode head, int k) {if(head==null){return null;}int n=0;ListNode cur=head;//计算出列表的长度while(cur!=null){n++;cur=cur.next;}ListNode dummyNode=new ListNode(-1);dummyNode.next=head;ListNode pre=null;ListNode p0=dummyNode;ListNode curNode=p0.next;while(n>=k){n-=k;for (int i =0; i <k; i++) {ListNode next=curNode.next;curNode.next=pre;pre=curNode;curNode=next;}ListNode next=p0.next;p0.next.next=curNode;p0.next=pre;p0=next;}return dummyNode.next;}

下面给大家递归的代码,供大家借鉴:

   //递归反转public ListNode reverseKGroup(ListNode head, int k) {if(head==null||head.next==null){return head;}ListNode r=head;for (int i = 0; i <k; i++) {if(r==null){return head;}r=r.next;}ListNode node=reverse(head,r);head.next=reverseKGroup(r,k);return node;}//给定区间链表进行反转public ListNode reverse(ListNode head,ListNode right){ListNode pre=null,curNode=head,next=null;while(curNode!=right){next=curNode.next;curNode.next=pre;pre=curNode;curNode=next;}return pre;}

相关文章:

面试热题(翻转k个链表)

给你链表的头节点 head &#xff0c;每 k 个节点一组进行翻转&#xff0c;请你返回修改后的链表。 k 是一个正整数&#xff0c;它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍&#xff0c;那么请将最后剩余的节点保持原有顺序。 你不能只是单纯的改变节点内部的值&a…...

前端面试的性能优化部分(4)每天10个小知识点

目录 系列文章目录前端面试的性能优化部分&#xff08;1&#xff09;每天10个小知识点前端面试的性能优化部分&#xff08;2&#xff09;每天10个小知识点前端面试的性能优化部分&#xff08;3&#xff09;每天10个小知识点前端面试的性能优化部分&#xff08;4&#xff09;每天…...

el-checkbox修改选中和未选中的值

由于在checkbox选中的时候&#xff0c;默认的是为true和false。 后端定义的绑定字段不是为布尔值&#xff0c;而是为0&#xff0c;1 解决办法 <el-checkbox v-model"model.status" :true-label"1" :false-label"0"> </el-checkbox>…...

完整版:TCP、UDP报文格式

目录 TCP报文格式 报文格式 报文示例 UDP报文格式 报文格式 报文示例 TCP报文格式 报文格式 图1 TCP首部格式 字段长度含义Source Port16比特源端口&#xff0c;标识哪个应用程序发送。Destination Port16比特目的端口&#xff0c;标识哪个应用程序接收。Sequence Numb…...

如何远程连接云服务器oracle数据库

要远程连接云服务器上的Oracle数据库&#xff0c;可以按照以下步骤进行操作&#xff1a; 1. 确保你的云服务器已经安装了Oracle数据库&#xff0c;并且启动了数据库服务。 2. 登录到云服务器的操作系统。可以使用SSH工具(如PuTTY)连接到云服务器&#xff0c;使用管理员权限登录…...

“深入剖析JVM内部机制:探秘Java虚拟机的运行原理“

标题&#xff1a;深入剖析JVM内部机制&#xff1a;探秘Java虚拟机的运行原理 摘要&#xff1a;本文将深入剖析Java虚拟机&#xff08;JVM&#xff09;的内部机制&#xff0c;探秘其运行原理。我们将从JVM的结构、内存管理、垃圾回收、即时编译等方面展开讨论&#xff0c;并通过…...

尚品汇总结十:秒杀模块(面试专用)

1、需求分析 所谓“秒杀”&#xff0c;就是商家发布一些超低价格的商品&#xff0c;所有买家在同一时间网上抢购的一种销售方式。通俗一点讲就是商家为促销等目的组织的网上限时抢购活动。由于商品价格低廉&#xff0c;往往一上架就被抢购一空&#xff0c;有时只用一秒钟。 秒…...

什么是设计模式?

目录 概述: 什么是模式&#xff01;&#xff01; 为什么学习模式&#xff01;&#xff01; 模式和框架的比较&#xff1a; 设计模式研究的历史 关于pattern的历史 Gang of Four(GoF) 关于”Design”Pattern” 重提&#xff1a;指导模式设计的三个概念 1.重用(reuse)…...

Node.js |(三)Node.js API:path模块及Node.js 模块化 | 尚硅谷2023版Node.js零基础视频教程

学习视频&#xff1a;尚硅谷2023版Node.js零基础视频教程&#xff0c;nodejs新手到高手 文章目录 &#x1f4da;path模块&#x1f4da;Node.js模块化&#x1f407;介绍&#x1f407;模块暴露数据⭐️模块初体验⭐️暴露数据 &#x1f407;导入文件模块&#x1f407;导入文件夹的…...

Netty自定义编码解码器

上次通信的时候用的是自带的编解码器&#xff0c;今天自己实现一下自定义的。 1、自定义一下协议 //协议类 Data public class Protocol<T> implements Serializable {private Long id System.currentTimeMillis();private short msgType;// 假设1为请求 2为响应privat…...

HOperatorSet.OpenFramegrabber “GigEVision“

HOperatorSet.OpenFramegrabber "GigEVision"访问失败 直接跳出 但其他算子可以访问 重装halcon x86...

图的遍历DFSBFS-有向图无向图

西江月・证明 即得易见平凡&#xff0c;仿照上例显然。留作习题答案略&#xff0c;读者自证不难。 反之亦然同理&#xff0c;推论自然成立。略去过程Q.E.D.&#xff0c;由上可知证毕。 有向图的遍历可以使用深度优先搜索&#xff08;DFS&#xff09;和广度优先搜索&#xff08…...

【NLP】深入浅出全面回顾注意力机制

深入浅出全面回顾注意力机制 1. 注意力机制概述2. 举个例子&#xff1a;使用PyTorch带注意力机制的Encoder-Decoder模型3. Transformer架构回顾3.1 Transformer的顶层设计3.2 Encoder与Decoder的输入3.3 高并发长记忆的实现self-attention的矩阵计算形式多头注意力&#xff08;…...

Linux应用编程的read函数和Linux驱动编程的read函数的区别

Linux应用编程的read函数用于从文件描述符&#xff08;文件、管道、套接字等&#xff09;中读取数据。它的原型如下&#xff1a; ssize_t read(int fd, void *buf, size_t count);其中&#xff0c;fd参数是文件描述符&#xff0c;buf是用于存储读取数据的缓冲区&#xff0c;co…...

Kubernetes(K8s)从入门到精通系列之十:使用 kubeadm 创建一个高可用 etcd 集群

Kubernetes K8s从入门到精通系列之十&#xff1a;使用 kubeadm 创建一个高可用 etcd 集群 一、etcd高可用拓扑选项1.堆叠&#xff08;Stacked&#xff09;etcd 拓扑2.外部 etcd 拓扑 二、准备工作三、建立集群1.将 kubelet 配置为 etcd 的服务管理器。2.为 kubeadm 创建配置文件…...

使用动态规划实现错排问题-2023年全国青少年信息素养大赛Python复赛真题精选

[导读]&#xff1a;超平老师计划推出《全国青少年信息素养大赛Python编程真题解析》50讲&#xff0c;这是超平老师解读Python编程挑战赛真题系列的第15讲。 全国青少年信息素养大赛&#xff08;原全国青少年电子信息智能创新大赛&#xff09;是“世界机器人大会青少年机器人设…...

大规模向量检索库Faiss学习总结记录

因为最近要使用到faiss来做检索和查询&#xff0c;所以这里只好抽出点时间来学习下&#xff0c;本文主要是自己最近学习的记录&#xff0c;来源于网络资料查询总结&#xff0c;仅用作个人学习总结记录。 Faiss的全称是Facebook AI Similarity Search&#xff0c;是FaceBook的A…...

SpringCloudAlibaba之Sentinel(一)流控篇

前言&#xff1a; 为什么使用Sentinel&#xff0c;这是一个高可用组件&#xff0c;为了使我们的微服务高可用而生 我们的服务会因为什么被打垮&#xff1f; 一&#xff0c;流量激增 缓存未预热&#xff0c;线程池被占满 &#xff0c;无法响应 二&#xff0c;被其他服务拖…...

哪种模式ip更适合你的爬虫项目?

作为一名爬虫程序员&#xff0c;对于数据的采集和抓取有着浓厚的兴趣。当谈到爬虫ip时&#xff0c;你可能会听说过两种常见的爬虫ip类型&#xff1a;Socks5爬虫ip和HTTP爬虫ip。但到底哪一种在你的爬虫项目中更适合呢&#xff1f;本文将帮助你进行比较和选择。 首先&#xff0c…...

优维低代码实践:对接数据

优维低代码技术专栏&#xff0c;是一个全新的、技术为主的专栏&#xff0c;由优维技术委员会成员执笔&#xff0c;基于优维7年低代码技术研发及运维成果&#xff0c;主要介绍低代码相关的技术原理及架构逻辑&#xff0c;目的是给广大运维人提供一个技术交流与学习的平台。 优维…...

DeepFace实战:用5行代码快速搭建一个本地人脸搜索系统(附完整代码)

DeepFace实战&#xff1a;5行代码构建本地人脸搜索系统的工程化实践 人脸识别技术早已不再是实验室里的黑科技&#xff0c;而是能够快速落地的实用工具。今天我们将用Python生态中最轻量级的DeepFace库&#xff0c;从工程化角度构建一个真正可用的人脸搜索系统。不同于简单的AP…...

光纤干涉条纹投射导向的动态三维形貌测量技术【附程序】

✨ 长期致力于条纹投射轮廓术、光纤干涉条纹投射、正弦相位调制、任意步距相移相位解调、系统标定研究工作&#xff0c;擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流&#xff0c;点击《获取方式》 &#xff08;1&#xff09;基于…...

从缺页异常看Linux内存管理的基石:写时复制、延迟分配与交换机制

从缺页异常看Linux内存管理的基石&#xff1a;写时复制、延迟分配与交换机制 当你在Linux终端敲下./a.out时&#xff0c;内核如何将磁盘上的程序转化为内存中的鲜活进程&#xff1f;这个看似简单的过程背后&#xff0c;隐藏着一套精妙的内存管理机制。缺页异常&#xff08;Page…...

从IMC层到应力点:手把手教你用SEM/EDS给BGA焊点做一次‘体检’

从IMC层到应力点&#xff1a;手把手教你用SEM/EDS给BGA焊点做一次‘体检’ 当一块电路板上的BGA焊点出现异常时&#xff0c;往往就像人体某个关节出了问题——表面看不出明显伤痕&#xff0c;但功能已经受限。这时候&#xff0c;我们需要像医生一样&#xff0c;用专业设备给焊…...

测试工程师的沟通技巧:如何向开发工程师反馈bug

在软件研发的协作链条中&#xff0c;测试工程师与开发工程师的互动至关重要&#xff0c;而反馈bug则是两者沟通的核心场景之一。高效、专业的bug反馈&#xff0c;不仅能加速问题解决&#xff0c;提升产品质量&#xff0c;更能维护良好的团队协作氛围。对于软件测试从业者而言&a…...

统信UOS离线部署实战:手把手教你用yum缓存提取sshpass等软件包(附完整命令)

统信UOS离线部署全流程指南&#xff1a;从缓存提取到依赖解析 在高度安全隔离的内网环境中&#xff0c;统信UOS系统管理员常面临一个核心挑战&#xff1a;如何将联网环境获取的软件包完整迁移到离线机器。与常见的/var/cache/yum路径不同&#xff0c;统信UOS的缓存机制有其特殊…...

保姆级教程:用PyTorch从零复现YOLOv4(附完整代码与Mosaic数据增强实现)

从零构建YOLOv4&#xff1a;代码级实现与核心模块解析 1. 环境配置与工具准备 在开始复现YOLOv4之前&#xff0c;我们需要搭建一个高效的开发环境。推荐使用Python 3.8和PyTorch 1.7的组合&#xff0c;这是目前最稳定的深度学习开发环境之一。 首先安装必要的依赖库&#xff1a…...

Linux Shell生成随机文件:dd、openssl等工具实战与性能优化

1. 项目概述&#xff1a;为什么我们需要一个“随机”的固定大小文件&#xff1f;在日常的系统管理、开发测试&#xff0c;甚至是性能基准评测中&#xff0c;我们经常会遇到一个看似简单却非常实用的需求&#xff1a;快速生成一个指定大小的文件&#xff0c;并且希望文件内容是随…...

导师认可的AI论文软件榜单(2026 最新实测)

基于学术严谨性、写作效率、功能全面性及用户反馈&#xff0c;以下是2026年最新实测中表现突出的AI论文写作工具权威榜单&#xff0c;按综合使用价值从高到低排列&#xff0c;并附上各工具的核心优势与适用人群。&#x1f3c6; 第一梯队&#xff1a;全流程学术解决方案&#xf…...

RK3588/RK3568嵌入式开发:从通用镜像到定制分区镜像的完整实践指南

1. 项目概述&#xff1a;从“通用”到“专属”的镜像进化最近在折腾RK3588和RK3568平台时&#xff0c;我发现了一个挺有意思的升级点&#xff1a;开发板和核心板的镜像支持定制分区了。这听起来可能有点技术化&#xff0c;但说白了&#xff0c;就是以前我们拿到的系统镜像&…...