【题解】链表中的节点每k个一组翻转

news/2024/4/26 4:24:31/文章来源:https://blog.csdn.net/weixin_56916549/article/details/132007837

题目链接:链表中的节点每k个一组翻转
解题思路1:递归
代码如下:

    ListNode* reverseKGroup(ListNode* head, int k) {//找到每次反转的尾部,尾部即是反转后的头部ListNode* tail = head;//遍历k次找到尾部,一组有k个,从当前节点往后走k部,就走到了第k个,也就是该组的尾部//本for循环的目的就是找到每一组的头部,进行拼接for(int i=0; i<k; i++){if(tail == nullptr){//如果不足k步走到了链表尾部,直接返回head,不反转,该组顺序不变return head;}tail = tail->next;}//链表进行反转的时候需要前序节点和当前节点//当前节点的next要指向前序节点,当前节点要指向下一个节点ListNode* pre = nullptr;ListNode* cur = head;//在到达当前段尾节点前while(cur != tail){ListNode* temp = cur->next;cur->next = pre;pre = cur;cur = temp;}//head是原来的头,现在是反转后的尾,用来和下一组进行连接//为什么返回pre呢?pre是每一个当前组的头节点head->next = reverseKGroup(tail, k);return pre;}

解题思路2:非递归
代码如下:

    ListNode* reverseKGroup(ListNode* head, int k) {//创建一个虚拟节点ListNode* dummy = new ListNode(0);//虚拟节点指向头结点dummy->next = head;ListNode* pre =  dummy;//pre是每组的前一个节点,要和下一组进行连接ListNode* end = dummy;while(end->next != nullptr){//每k个一组进行反转,end是每k个链表的最后一个for(int i=0; i<k&&end!=nullptr; i++){end = end->next;}//如果end是空的,则说明不够k个,凑不成一组,直接退出循环即可if(end == nullptr) break;//反转开始的节点是pre的下一个节点ListNode* start = pre->next;//next是下一次反转的头结点ListNode* next = end->next;//end是本组的最后一个节点end->next = nullptr;//将pre和反转后的k个一组的链表连接起来pre->next = reverse(start);start->next = next;//start是下一次反转的头,更新为nextpre = start;end = start;}return dummy->next;}//链表的反转ListNode* reverse(ListNode* head){ListNode* pre = nullptr;ListNode* cur = head;while (cur != nullptr) {ListNode* temp = cur->next;cur->next = pre;pre = cur;cur = temp;}return pre;}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_337535.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【面试题】与通义千问的芯片前端设计模拟面试归纳

这里是尼德兰的喵芯片设计相关文章,欢迎您的访问! 如果文章对您有所帮助,期待您的点赞收藏! 让我们一起为芯片前端全栈工程师而努力! 前言 两个小时,与chatGPT进行了一场数字IC前端设计岗的面试_尼德兰的喵的博客-CSDN博客 和GPT-3.5的回答可以对比品尝,味道更好。 模…

*CTF 2023 web jwt2struts 题解wp

jwt2struts 根据题目名字猜测&#xff0c;这题考察jwt和Struts2 包里面果然有一个cookie 验证了&#xff0c;是jwt eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ1c2VyIiwiZXhwIjoyMDA2MjI1MjgxfQ.F7vOtdqg48M1DYK4tVZywTipIYDqKfsBSju7ekLSecU 我们的目标应该是把user改…

Python(五十二)列表元素的判断及遍历

❤️ 专栏简介&#xff1a;本专栏记录了我个人从零开始学习Python编程的过程。在这个专栏中&#xff0c;我将分享我在学习Python的过程中的学习笔记、学习路线以及各个知识点。 ☀️ 专栏适用人群 &#xff1a;本专栏适用于希望学习Python编程的初学者和有一定编程基础的人。无…

JavaScript学习 -- 对称加密算法DES

在现代的互联网时代&#xff0c;数据安全性备受关注。为了保护敏感数据的机密性&#xff0c;对称加密算法是一种常用的方法。在JavaScript中&#xff0c;DES&#xff08;Data Encryption Standard&#xff09;是一种常用的对称加密算法。本篇博客将为您展示如何在JavaScript中使…

代码、低代码、无代码开发触手可及的低代码平台源码

基于moleculer微服务架构开发的低代码平台源码&#xff0c;代码、低代码、无代码开发触手可及。 一、低代码平台系统功能 【公司信息】 管理员可通过页面顶部设置菜单或者应用程序中设置应用进入到后台设置页面。 在公司信息页面可进行基础信息修改&#xff0c;启用用户自助…

【机器学习】习题3.3Python编程实现对数几率回归

参考代码 结合自己的理解&#xff0c;添加注释。 代码 导入相关的库 import numpy as np import pandas as pd import matplotlib from matplotlib import pyplot as plt from sklearn import linear_model导入数据&#xff0c;进行数据处理和特征工程 # 1.数据处理&#x…

Java基础_网络编程

Java基础_网络编程 网络编程三要素InetAddress网络模型 UDP通信程序单播发送数据接收数据聊天室 组播广播 TCPTCP通信程序三次握手和四次挥手 来源Gitee地址 网络编程三要素 IP: 设备在网络中的地址&#xff0c;是唯一的标识端口号: 应用程序在设备中唯一的标识。协议: 数据在…

Python实现自动登录和下单脚本,代码嘚魅力~

目录标题 前言环境使用:代码实现思路配置浏览器驱动代码实现尾语 前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 学python对selenium应该不陌生吧 Selenium 是最广泛使用的开源 Web UI&#xff08;用户界面&#xff09;自动化测试套件之一。 Selenium 支持的语言包括C#…

通过clone的方式,下载huggingface中的大模型(git lfs install)

1、如图&#xff1a;可以手动一个个文件下载&#xff0c;但是那样太慢了&#xff0c;此时&#xff0c;可以点击下图圈起来的地方。 2、点击【Clone repository】&#xff0c;在命令行中&#xff0c;输入【git lfs install】&#xff08;安装了这个&#xff0c;才会下载大文件&a…

appium的基本使用

appium的基本使用 一、appium的基本使用appium环境安装1、安装Android SDK 2、安装Appium3、安装手机模拟器4、Pycharm安装 appium-python-alicent5、连接appium和模拟器6、Python代码调用appium软件&#xff0c;appium软件在通过adb命令调用android操作系统&#xff08;模拟器…

LeetCode 刷题 数据结构 数组 485 最大连续1的个数

给定一个二进制数组 nums &#xff0c; 计算其中最大连续 1 的个数。 示例 1&#xff1a; 输入&#xff1a;nums [1,1,0,1,1,1] 输出&#xff1a;3 解释&#xff1a;开头的两位和最后的三位都是连续 1 &#xff0c;所以最大连续 1 的个数是 3.示例 2: 输入&#xff1a;nums […

基于中文金融知识的 LLaMA 系微调模型的智能问答系统:LLaMA大模型训练微调推理等详细教学

项目设计集合&#xff08;人工智能方向&#xff09;&#xff1a;助力新人快速实战掌握技能、自主完成项目设计升级&#xff0c;提升自身的硬实力&#xff08;不仅限NLP、知识图谱、计算机视觉等领域&#xff09;&#xff1a;汇总有意义的项目设计集合&#xff0c;助力新人快速实…

《向量数据库指南》:向量数据库Pinecone如何集成Elasticsearch

目录 上传嵌入模型 上传数据集 创建嵌入 将Elasticsearch索引移动到Pinecone 概要 是一个强大的开源搜索引擎和分析平台,广泛用作基于关键字的文本搜索的文档存储。 Pinecone是一个广泛用于生产应用程序的向量数据库,例如语义搜索、推荐系统和威胁检测,需要在数亿甚…

68. 文本左右对齐

题目链接&#xff1a;力扣 解题思路&#xff1a;遍历单词数组&#xff0c;确定每一行的单词数量&#xff0c; 之后就可以得到每一个需要补充的空格数量。从而得到单词之间需要补充的空格数量。具体算法如下&#xff1a; 确定每一行的单词数量 初始值&#xff1a; num 0&…

【MQTT5】原生PHP对接Uni H5、APP、微信小程序实时通讯消息服务

文章目录 视频演示效果前言一、分析二、全局注入MQTT连接1.引入库2.写入全局连接代码 二、PHP环境建立总结 视频演示效果 【uniapp】实现买定离手小游戏 前言 Mqtt不同环境问题太多&#xff0c;新手可以看下 《【MQTT】Esp32数据上传采集&#xff1a;最新mqtt插件&#xff08;支…

用JavaScript和HTML实现聊天页面和功能(超详细)

文章目录 &#x1f680;一、介绍&#x1f680;二、开始编码&#x1f50e;2.1 创建一个HTML文件&#x1f50e;2.2 编写样式&#x1f50e;2.3 完善聊天页面&#x1f50e;2.4 编写按钮逻辑&#x1f50e;2.5 测试聊天效果&#x1f50e;2.6 优化对话显示&#x1f50e;2.7 设置一个自…

SQL-每日一题【1070. 产品销售分析 III】

题目 销售表 Sales&#xff1a; 产品表 Product&#xff1a; 编写一个 SQL 查询&#xff0c;选出每个销售产品 第一年 销售的 产品 id、年份、数量 和 价格。 结果表中的条目可以按 任意顺序 排列。 查询结果格式如下例所示&#xff1a; 示例 1&#xff1a; 解题思路 前置知…

LLaMA:开放和高效的基础语言模型

Part1前言 我们介绍了LLaMA&#xff0c;这是一个参数范围从7B到65B的基础语言模型集合。我们在数以万亿计的标记上训练我们的模型&#xff0c;并表明有可能完全使用公开可用的数据集来训练最先进的模型&#xff0c;而不必求助于专有的和不可获取的数据集。特别是&#xff0c;L…

PDF.js实现搜索关键词高亮显示效果

在static\PDF\web\viewer.js找到定义setInitialView方法 大约是在1202行&#xff0c;不同的pdf.js版本不同 在方法体最后面添加如下代码&#xff1a; // 高亮显示关键词---------------------------------------- var keyword new URL(decodeURIComponent(location)).searchP…

单链表的多语言表达:C++、Java、Python、Go、Rust

单链表 是一种链式数据结构&#xff0c;由一个头节点和一些指向下一个节点的指针组成。每个节点包含一个数据元素和指向下一个节点的指针。头节点没有数据&#xff0c;只用于表示链表的开始位置。 单链表的主要操作包括&#xff1a; 添加元素&#xff1a;在链表的头部添加新…