LeetCode:25. K 个一组翻转链表

news2024/11/18 14:37:53

25. K 个一组翻转链表

  • 1)题目
  • 2)思路
  • 3)代码
  • 4)结果

1)题目

给你链表的头节点 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) 额外内存空间的算法解决此问题吗?

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

2)思路

例子:head = [1,2,3,4], k = 3

(length -= k) >= 0 true        (length -= k) >= 0 false    retuen 3 -> 2 -> 1 -> 4;
初始 
       1 -> 2 -> 3 -> 4
head   s    e
       w    
第一轮翻转之后
       2 -> 1 -> 3 -> 4
head   e    s    
            w  
listNode = start;
       2 -> 1 -> 3 -> 4
head        s    e
       w       
第二轮翻转
       3 -> 2 -> 1 -> 4
head   e         s    
            w  
listNode = start;
       3 -> 2 -> 1 -> 4
head             s    e
       w  

3)代码

public static ListNode reverseKGroup(ListNode head, int k) {
    if (k == 1) return head;
    ListNode headNode = new ListNode();
    headNode.next = head;
    ListNode listNode = headNode;

    // 计算链表长度
    int length = 0;
    while (head != null) {
        head = head.next;
        ++length;
    }

    while ((length -= k) >= 0) {
        ListNode start = listNode.next;
        for (int i = 0; i < k - 1; i++) {	// k个进行翻转,翻转k-1次
            ListNode wait = listNode.next;  // 该节点始终指向头结点的后一位
            ListNode end = start.next;
            listNode.next = end;
            start.next = end.next;
            end.next = wait;
        }
        listNode = start;
    }

    return headNode.next;
}

4)结果

在这里插入图片描述

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

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

相关文章

研发工程师玩转Kubernetes——通过文件创建Pod

在《研发工程师玩转Kubernetes——部署应用》中&#xff0c;我们使用kubectl run命令启动了一个可以在kubernetes集群内部访问的nginx——它不可以通过物理机访问。而我们使用文件创建时&#xff0c;则可以通过设置相关参数&#xff0c;让nginx可以通过物理机地址访问。 创建P…

【社工】NodeJS 应用仓库钓鱼

前言 城堡总是从内部攻破的。再强大的系统&#xff0c;也得通过人来控制。如果将入侵直接从人这个环节发起&#xff0c;那么再坚固的防线&#xff0c;也都成为摆设。 下面分享一个例子&#xff0c;利用应用仓库&#xff0c;渗透到开发人员的系统中。 应用仓库 应用仓库对于开…

手写决策树算法——基于决策树的XX联盟游戏胜负预测

机器学习 基于决策树的 XX联盟游戏胜负预测 作者&#xff1a;李俊才 &#xff08;jcLee95&#xff09;&#xff1a;https://blog.csdn.net/qq_28550263?spm1001.2101.3001.5343 邮箱 &#xff1a;291148484163.com 本文地址&#xff1a;https://blog.csdn.net/qq_28550263/ar…

用Powerpoint (PPT)制作并导出矢量图、高分辨率图

论文写作时经常需要导入矢量图&#xff0c;正规军都是用AI或者Inkscape&#xff0c;但是PPT更加适合小白用户&#xff0c;或者一些简单的构图需求&#xff0c;而且不得不承认PPT的某些功能是真的香&#xff0c;例如&#xff1a;简单的对齐、文字插入和格式修改等等。但是PPT是不…

Ansys仿真TDR

1、TDR测量的原理&#xff1a; 2、时域反射计TDR的电路仿真 打开Ansys的TDR电路例程&#xff0c;单端电路和TDR源的设置如下图所示&#xff0c;被测的DUT为4段传输线和一个电容&#xff0c;一个电感。 TDR测的结果如下&#xff1a; 信号到负载电容的时间为1.5ns&#xff0c;然…

Cesium源码分享--气泡窗

Cesium气泡窗插件 在线api文档说明 在线体验地址 更多案例地址 免费gis数据 ps&#xff1a;如果可以的话&#xff0c;希望大家能给我个star&#xff0c;好让我有更新下去的动力&#xff1b; 实现原理&#xff1a; Cesium和我们平时常见的leaflet、ol以及arcgis api是不一样…

组合数学公式

1、8个相同的球放进4个相同的盒子里&#xff0c;每盒至少一个&#xff0c;有几种方法 &#xff1f; 公式&#xff1a;球相同&#xff0c;盒相同&#xff0c;拆分公式。 P4(8)P1(4)P2(4)P3(4)P4(4) 1211 5 2、8个相同的球放进4个不同的盒子里&#xff0c;每盒至少一个&#xff…

GPT学习笔记-聚类(clustering)

1. 什么是clustering 聚类是一种非常有用的无监督学习技术&#xff0c;它的主要目的是发现数据的内在结构和模式。在许多实际应用中&#xff0c;我们可能没有明确的目标变量或预测目标&#xff0c;但我们仍希望了解数据的组织方式&#xff0c;或者找出数据中的特定模式或组。这…

如何构造HTTP请求

直接通过浏览器地址栏 具体的流程,直接通过浏览器地址栏,输入一个url >构造出一个GET请求 html中,一些特殊标签,也会触发GET请求 1) link 2) script 3) img 4) a以上的几个标签都会触发Get请求了. form表单,可以触发GET和POST请求 form 的重要参数: action: 构造的 HTT…

【Redis面试点总结】

1、缓存 1.1、穿透 查询一个空数据&#xff0c;mysql也查不到也不会写入缓存可能导致多次请求数据库 方案一&#xff1a;缓存设空即可&#xff08;可能发生数据不一致就是这条数据有了但此时缓存是空&#xff0c;消耗内存&#xff09; 方案二&#xff1a;布隆过滤器&#x…

hive数据库hql基础操作02

1.内部表和外部表 默认情况下创建的表就是内部表&#xff0c;Hive拥有该表的结构和文件。换句话说&#xff0c;Hive完全管理表&#xff08;元数据和数据&#xff09;的生命周期&#xff0c;类似于RDBMS中的表。当你删除内部表时&#xff0c;它会删除数据以及表的元数据。可以使…

【python】价值25~30K的国外企业招聘面试考题

目录标题 前言案例介绍网站分析代码展示尾语 &#x1f49d; 前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 今天的这个案例&#xff0c;是一位同学的面试题&#xff0c;人在国外&#xff0c;月薪25~30K 本来以为是难度很大的反pa、逆向或者算法之类的&#xff0c; 谁知道…

深度学习笔记1——CNN识别黑白手写数字

文章目录 摘要手写数字数据集&#xff08;MNIST&#xff09;卷积神经网络&#xff08;Convolution Neural Network, CNN&#xff09;模型架构搭建Softmax函数和CrossEntropy损失函数Adam 优化器 构造数据迭代器训练、验证、测试模型训练结果可视化 摘要 本文将介绍CNN的开山之…

读书笔记--读数学之美有感

大概是在10年前&#xff0c;无意间读到吴军老师撰写得数学之美&#xff0c;感觉吴老师对数学与信息论的结合讲述的太好了&#xff0c;吴老师结合自身的多年工作经历将信息技术中用到的数学&#xff0c;特别是数学里面的很多概率论、线性代数、模型算法、编解码规则等&#xff0…

gunicorn常用参数命令

Gunicorn 是一个 Python 的 WSGI HTTP 服务器。具有实现简单,轻量级,高性能等特点。更多介绍内容参考官网&#xff0c;这里介绍几个常用参数。 安装 pip3 install gunicorn通过输入gunicorn -v查看版本。 最简洁的启动。首先进入到项目目录&#xff0c;例如django项目和mana…

Vue中通过集成Quill富文本编辑器实现公告的发布。Vue项目中vue-quill-editor的安装与使用【实战开发应用】

前言 闲的无聊、给原有的系统添加一个公告的功能。就是后台可以写一些公告信息&#xff0c;然后前台可以看到发布的信息。一般来说一个公告就是一些文字描述图片视频等。还有排版样式啥的。使用文本编辑器就可以实现。然后正好用到了Quill&#xff0c;通过Quill富文本编辑器集成…

JS逆向 -- 某视频vurl值的加密分析

接上节课内容 JS逆向 -- 某视频vid值的加密分析 JS逆向 -- 某视频val值和pid值的加密分析 一、在上节课中有个vurl的值需要分析&#xff0c;具体内容如下 vurl: https://mp4play-hs-cdn.ysp.cctv.cn/o000017kuww.jbZe10002.mp4? sdtfrom4330701& guidlhsuf6ia_0rieucp…

进程性能分析工具 pidstat 和用 python 的 matplotlib 库输出分析图表

文章目录 前情提要效果展示pidstat 简介matplotlib 简介认识 figure 和 axes绘制曲线图绘制柱形图创建两个轴&#xff0c;将上面两种图形放到一个 figure 中Backends of matplotlib如何使用 WebAgg注意事项 前情提要 这段时间在忙服务器压测的工作&#xff0c;虽然我们程序里面…

五种高效的原型设计工具推荐

软件产品的诞生注定要经历一个过程&#xff1a;需求分析、设计、开发、测试和在线。在设计阶段&#xff0c;原型设计是软件设计和开发的重要保证。与其他工作一样&#xff0c;高效的原型设计需要相应工具的帮助来完成原型设计。在许多原型设计工具中&#xff0c;这里推荐了五种…

洛谷P1420-最长连号

洛谷P1420-最长连号 这个题目很入门&#xff0c;但是我第一次做怎么做都做不出来&#xff0c;看了几个代码&#xff0c;方法各式各样&#xff0c;这个我是我觉得最通俗易懂的一个, 循环外面的两个输入第一个cin是个数第二个是输入的第一个数&#xff0c;所以下面for循环的条件…