LeetCode25. K 个一组翻转链表

news2024/11/24 6:44:48

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

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

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

示例 1:


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

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

提示:
链表中的节点数目为 n
1 <= k <= n <= 5000
0 <= Node.val <= 1000
 

进阶:你可以设计一个只用 O(1) 额外内存空间的算法解决此问题吗?

class ListNode {
  int val;
  ListNode? next;
  ListNode([this.val = 0, this.next]);
}

void main() {
  ListNode l11 = ListNode();
  ListNode? head = l11;
  l11.next = ListNode(1);
  l11 = l11.next!;
  l11.next = ListNode(2);
  l11 = l11.next!;
  l11.next = ListNode(3);
  l11 = l11.next!;
  l11.next = ListNode(4);
  l11 = l11.next!;
  l11.next = ListNode(5);
  l11 = l11.next!;
  int k = 2;

  ListNode? result = reverseKGroup(head.next, k);
  while (result != null) {
    print('result:${result.val}');
    result = result.next;
  }
}

ListNode? reverseKGroup(ListNode? head, int k) {
  ListNode? tail = head;
  for (int i = 0; i < k; i++) {
    if (tail == null) {
      return head;
    }
    tail = tail.next;
  }
  ListNode? per;
  ListNode? current = head;
  while (current != tail) {
    ListNode? temp = current?.next;
    current?.next = per;
    per = current;
    current = temp;
  }
  head?.next = reverseKGroup(tail, k);
  return per;
}

LeetCode25. K 个一组翻转链表

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/reverse-nodes-in-k-group
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

操作系统之IO管理

目录 IO设备的概念和分类 IO控制器 IO控制方式 IO软件层次结构 IO应用程序接口和驱动程序接口 IO核心子系统 假脱机技术 IO设备的分配和回收 缓冲区管理 磁盘的结构 磁盘调度算法 磁盘的管理 固态硬盘 本文内容摘自&#xff1a;5.1_1_I-O设备的概念和分类_哔哩哔哩…

cookie 和 session 的恩恩怨怨

目录 cookie 1. Cookie 从哪里来? 2. Cookie 到哪里去? 3. Cookie 有啥用? Session Session 中的常用方法 模拟实现一个登录页面: session 和 cookie 的最官方的恩恩怨怨 cookie Cookie 是浏览器在本地存储数据的一种机制 1. Cookie 从哪里来? Cookie 从服务器…

chatgpt赋能python:Python如何将两张图片横向拼在一起

Python如何将两张图片横向拼在一起 在网页设计中&#xff0c;有时候需要将两张图片横向拼在一起来达到更好的展示效果。本文将介绍如何使用Python实现这一功能。 前置知识 在使用Python进行图像处理之前&#xff0c;先了解以下几个库&#xff1a; Pillow&#xff1a;Python…

chatgpt赋能python:Python如何取非

Python如何取非 Python是一种强大的编程语言&#xff0c;可以用于许多不同的任务&#xff0c;包括搜索引擎优化&#xff08;SEO&#xff09;。在这篇文章中&#xff0c;我们将重点介绍Python如何取非&#xff0c;这对于SEO优化非常重要。 什么是取非&#xff1f; 在SEO中&am…

chatgpt赋能python:Python如何手动安装包:技术向SEO文章

Python如何手动安装包&#xff1a;技术向SEO文章 虽然大多数Python用户都习惯使用pip来安装和管理包&#xff0c;但手动安装包是必要的技能之一。这篇文章将介绍如何使用Python的标准方法手动安装包&#xff0c;并提供实际的指导。 为什么要手动安装包&#xff1f; 有时候&a…

达梦数据库读写分离集群搭建

目录 说明... 3 前期准备... 4 开始搭建读写分离... 5 一、主库200. 5 1、卸载原实例... 5 2、创建新的实例... 6 3、配置主库200. 6 4、启动主库... 8 5、设置OGUID.. 8 二、配置2台备库... 9 1、创建新的实例... 9 2、备份恢复&#xff08;初始化实例后应该先备份…

VS2012编译VTK7.1.1库,使用VTK加载显示STL图像

文章目录 cmake配置项目编译VTK库代码测试报错:no override found for vtkpolydata下载VTK库下载地址,下载VTK源码 https://vtk.org/download/ 需要工具 1.VS2012 2.CMAKE 官网 https://cmake.org/ cmake配置项目 下载后的vtk7.1.1库解压 安装好cmake,打开cmake-gui,在whe…

chatgpt赋能python:Python循环语句详解:如何循环执行一个语句

Python循环语句详解&#xff1a;如何循环执行一个语句 Python是一种简单易学、优雅高效的编程语言&#xff0c;在很多领域都有广泛应用。其中&#xff0c;循环语句特别重要&#xff0c;可以让我们轻松实现重复执行某个语句的功能。本文将介绍Python的循环语句及其应用场景&…

01:快速入门爬虫

1.引导 1.Robots协议 Robots协议&#xff08;爬虫协议&#xff09;的全称是“网络爬虫排除标准”&#xff08;Robots Exclusion Protocol&#xff09;&#xff0c;网站通过Robots协议告诉搜索引擎哪些页面可以抓取&#xff0c;哪些页面不能抓取。该协议是国际互联网界通行的道…

Pytorch1.12.1+cu113安装记录

因为torch1.7.0对于SiLU算子导出不支持,需要1.7.1才支持.于是索性准备更新一下自己的算法版本库,查询到CUDA11.3支持的最高Pytorch版本为1.12.1,于是统一做一下更新.这里采用离线下载的方式,因为在线下载实在是太蛋疼了 1. Pytorch离线包下载 这是官方提供的版本,我这里不直接…

Python-web开发学习笔记(4):CSS基础

&#x1f680; Python-web开发学习笔记系列往期文章&#xff1a; &#x1f343; Python-web开发学习笔记&#xff08;1&#xff09;--- HTML基础 &#x1f343; Python-web开发学习笔记&#xff08;2&#xff09;--- HTML基础 &#x1f343; Python-web开发学习笔记&#xff08…

面试常考算法(1):反转链表、局部反转链表(包含误区分析)

BM1 反转链表 给定一个单链表的头结点pHead(该头节点是有值的&#xff0c;&#xff0c;$ 长度为n&#xff0c;反转该链表后&#xff0c;返回新链表的表头。   数据范围: 0 ≤ n ≤ 1000 0 \leq n \leq 1000 0≤n≤1000   要求: 空间复杂度 O ( 1 ) O(1) O(1) &#xff0c…

QT QHorizontalSpacer弹簧控件

本文详细的介绍了QHorizontalSpacer控件的各种操作&#xff0c;例如&#xff1a;新建界面、控件布局、隐藏控件、设置宽高、添加布局、其它参数、.h源文件、cpp源文件、其它文章等等操作。 实际开发中&#xff0c;一个界面上可能包含十几个控件&#xff0c;手动调整它们的位置既…

最优化简明版(上)

引言 本文简单地介绍一些凸优化(Convex Optimization)的基础知识&#xff0c;可能不会有很多证明推导&#xff0c;目的是能快速应用到机器学习问题上。 凸集 直线与线段 设 x 1 ≠ x 2 x_1 \neq x_2 x1​x2​为 R n \Bbb R^n Rn空间中的两个点&#xff0c;那么具有下列形…

基于 log4j2 插件实现统一日志脱敏,性能远超正则替换

前言 金融用户敏感数据如何优雅地实现脱敏&#xff1f; 日志脱敏之后&#xff0c;无法根据信息快速定位怎么办&#xff1f; 经过了这两篇文章之后&#xff0c;我们对日志脱敏应该有了一定的理解。 但是实际项目中&#xff0c;我们遇到的情况往往更加复杂&#xff1a; 1&am…

开发云原生应用应遵循的十二要素

代码库&#xff1a;一份版本控制下的基准代码库&#xff0c;多份部署 应用程序的源代码仓库应该只包含一个应用程序&#xff0c;并列出它所依赖的资源清单。对于不同的环境&#xff0c;我们应该不需要重新编译或打包应用程序。每个环境中特有的设置应该与代码无关 依赖&#…

SpringMVC-【回顾】

回顾MVC架构 什么是mvc&#xff1a;模型、视图、控制器 -----软件设计规范 回顾servlet maven项目导入依赖&#xff08;webmvc,servlet-api,jsp-api,jstl,junit&#xff09;创建子模块&#xff0c;在子模块中添加框架支持&#xff08;在子模块中导入依赖jsp、servlet【因为父…

【NACK】视频rtp包接收及nack触发流程走读

这里大神分析很很透彻了:原文地址:WebRTC中NACK的处理流程 - 资料 - 音视频开发中文网 - 构建全国最权威的音视频技术交流分享论坛视频包的接收 RtpVideoStreamReceiver::ReceivePacket void RtpVideoStreamReceiver::ReceivePacket(const RtpPacketReceived& packet)知乎…

聊聊哪些奇葩的代码规范 —— 代码放一行

因为有些要求感觉实是太过奇葩&#xff0c;收集下来娱乐下大家。 代码规范要求 要求代码必须要放在一行上面&#xff0c;导致代码上面有不少行甚至超过了 1000 个字符。 规范解读 就是有时候代码过长&#xff0c;我们会折行增加可读性&#xff0c;最简单的一个例子就是 obj…

CG平台实验——逻辑回归

文章目录 练习2&#xff1a;逻辑回归介绍1 Logistic回归1.1 数据可视化1.2 实现1.2.1 Sigmoid函数1.2.2 代价函数和梯度1.2.2.1 代价函数1.2.2.2 梯度下降 1.2.3 寻找最优参数1.2.4 评估逻辑回归 2 正则化逻辑回归2.1 数据可视化2.2 特征映射2.3 代价函数和梯度 2.4 寻找最优参…