leetcode25. K 个一组翻转链表

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

k 是一个正整数,它的值小于或等于链表的长度。

如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。

示例 :

给定这个链表:1->2->3->4->5

当 k = 2 时,应当返回: 2->1->4->3->5

当 k = 3 时,应当返回: 3->2->1->4->5

说明 :

你的算法只能使用常数的额外空间。
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

思路:找k链表的两头,反转中间,并且操作连接部分的各种指针。代码有详细注释

 

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode(int x) { val = x; }* }*/
class Solution {public ListNode reverseKGroup(ListNode head, int k) {ListNode dummy = new ListNode(0);dummy.next = head;ListNode pre = dummy;ListNode end = dummy;while (end.next != null) {//1、找k个for (int i = 0; i < k && end != null; i++) end = end.next;//2、不足k个按原顺序,不用改变if (end == null) break;//3、记录反转链表的起点ListNode start = pre.next;//4、记录反转链表结尾的下一个节点ListNode next = end.next;//5、把反转链表的next赋值为null,方便调用reverse()end.next = null;//6、前节点的下一个节点是反转后的新头pre.next = reverse(start);//7、反转后的链表尾(之前的翻转起点)的next赋值为之前第4步记录的nextstart.next = next;//8、更新下一个要翻转k链表的前一个节点(也就是本次反转后的末尾)pre = start;//9、赋值end,为下一次循环的第一步做准备end = pre;}return dummy.next;}//翻转标准链表(最后节点的next是null),返回新链表的头private ListNode reverse(ListNode head) {ListNode pre = null;//前节点ListNode curr = head;//操作的节点while (curr != null) {//记录本次节点的下一个节点ListNode next = curr.next;//赋值本次节点的next为前节点curr.next = pre;//更新前节点和操作节点pre = curr;curr = next;}return pre;}
}

 

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

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

相关文章

游戏服务器架构:如何设计开发战斗系统的技能和buff系统

战斗系统中buff和skill如何配合 在网络游戏中的战斗形式多种多样,不同游戏的战斗逻辑也有很大的差异。但是一般都会涉及技能系统和buff系统,两种之间相互关联,技能可以产生buff作用在目标上,影响目标。同时buff也会影响技能的释放效果,两者都可以算得上游戏战斗系统最重要…

一文彻底搞懂静态库和动态库,显示链接和隐式链接

定义&#xff1a;运行时库 静态库 动态库运行时库&#xff1a;Unix中一个典型的运行时库例子就是libc&#xff0c;它包含标准的C函数&#xff0c;如&#xff0c;print()&#xff0c;exit()等等&#xff0c;用户能创建他们自己的运行库&#xff08;在Windows中是DLL&#xff09;…

mysql的cpu高定位

导致数据库CPU很高的原因有很多种,一般和慢SQL也有关(因为每条SQL要么占CPU高,要么占IO高,大体是这样)。 (1)、如果服务器有多个mysql实例,需要通过top命令看看是哪个mysql实例导致的cpu高(如果不是mysql导致的cpu高,需要优化其他导致cpu的程序): (2)、定位到占用…

kubelet内存异常分析

背景: kubelet被重启后, 内存再次升高, 在游戏启动后,没有进入大量玩家的情况下,2天时间占用接近10G,并且持续在增长, CPU偶尔负载高。AWS给出的解释是containerd v1.4.0版本问题, 以下为内部分析过程。 实际情况 # 整体情况 [ec2-user@server]$ free -h …

游戏服务器架构-设计模式之发布订阅模式

发布订阅模式场景 熟悉消息中间件的同学应该对发布/订阅模式(Publish Subscribe Pattern)并不陌生。即使你不了解消息中间件,那么在平时生活中发布/订阅模式也是非常常见的场景。 比如你打开你的微信订阅号,你订阅的作者发布的文章,会广播给每个订阅者。在这个场景里,微信公…

leetcode129. 求根到叶子节点数字之和

给定一个二叉树&#xff0c;它的每个结点都存放一个 0-9 的数字&#xff0c;每条从根到叶子节点的路径都代表一个数字。 例如&#xff0c;从根到叶子节点路径 1->2->3 代表数字 123。 计算从根到叶子节点生成的所有数字之和。 说明: 叶子节点是指没有子节点的节点。 …

游戏服务器架构-设计模式之观察者模式和发布订阅模式真的一样吗?

前面我给大家分享了观察者模式和发布订阅模式,有人私信给我说这俩不是一样嘛,大体没什么区别,我猜测大多数认为这两者是一样的可以继续阅读这两篇文章,如果还不能解答你的问题,我相信这篇文章对比两者的关系会让你有更深刻的认识。 游戏服务器架构-设计模式之观察者模式 游…

Struts2中s:iterator/s:iterator标签的使用:

问题是这样的&#xff1a; <s:iterator value"zhangjieList"> <s:property value"bb"/> </s:iterator> 我在页面迭代了list里边的值&#xff0c;我想限定只显示100个字怎么做&#xff1f; 解决方案&#xff1a; <s:property valu…

聊一下CPU占用高的解决方案

前言: 在软件开发和性能测试中,CPU占用率是服务器开发一个很重要的指标,到底有哪些因素会导致CPU占 用率上升呢?又有哪些手段可以降低CPU的占用率呢? 如果你看了这篇文章后仍然没有解决项目问题的思路,请在下方留言或公众号后台留言。(后续我将更新一到两篇…

一文搞懂 什么是CPU上下文?为什么要切换?如何减少切换?

自从上篇文章聊一下CPU占用高的解决方案更新后,最近收到了一些热心观众的后台留言,问到的一些问题比较集中的是关于CPU切换. 实际用C/C++,go开发,你会特别注意内存和CPU的使用情况,那些对于CPU使用情况特别关注,或者性能特别关注的朋友可以看看这篇文章,相信看完结尾的示…

leetcode257. 二叉树的所有路径

给定一个二叉树&#xff0c;返回所有从根节点到叶子节点的路径。 说明: 叶子节点是指没有子节点的节点。 示例: 输入: 1 / \ 2 3 \ 5 输出: ["1->2->5", "1->3"] 解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3 思…

内存优化-如何使用tcmalloc来提升内存性能?提升的结果太不可思议

无论是在游戏开发,或者其他长期运行的服务开发中,对内存的使用一直是架构师或者主程序在最初就要关注的point,如果内存使用不当,频繁申请释放内存造成系统负担过大,性能降低,到最后产生大量内存碎片,无法申请可利用内存,最终宕机,给广大程序员同学造成长期加班的痛苦。…

内存优化-使用tcmalloc分析解决内存泄漏和内存暴涨问题

其实我一直很想写关于tcmalloc的内存泄漏检测的文章,只是一直记不起来该如何下笔,有时项目太忙,在整理这方便的思考过少,另外遇到的问题也不是很多,直到最近用tcmalloc帮A项目排查一些很棘手的内存泄漏问题,有了一定的创作灵感,这才执笔创作,希望能分享给大家。 如果对…

leetcode130. 被围绕的区域

给定一个二维的矩阵&#xff0c;包含 X 和 O&#xff08;字母 O&#xff09;。 找到所有被 X 围绕的区域&#xff0c;并将这些区域里所有的 O 用 X 填充。 示例: X X X X X O O X X X O X X O X X 运行你的函数后&#xff0c;矩阵变为&#xff1a; X X X X X X X X X X X X…

闲话目前游戏服务器的开发

我是从12年开始进入页游行业&#xff0c;接触到的第一个游戏项目就是淘米网的《摩尔庄园》&#xff0c;公司那个时候也刚在美纽交所上市&#xff0c;被Benson&#xff0c;魏震和Rock腾讯三巨头的感染下&#xff0c;做着喜欢的游戏... &#xff08;后来在工作中我经常会遇到过不…

为什么我们仍然坚持用C++做游戏服务器

本篇文章纯属文字,不需要配图。 首先以我个人观点来说,C ++对于我的吸引力不仅仅是它的技术优点。c++是个庞大而奇怪的语言,很多新领域会选择这个语言是因为有性能上的需求,但是又拿不准瓶颈会出在哪里,C++是一个什么地方调优都很方便的语言,内存,CPU,线程优先…

危险!!!也许你的web网站或服务正在悄无声息地被SQL注入

2010年秋季,联合国官方网站遭受SQL注入攻击。 2014年一个叫“TeamDigi7al”的黑客组织攻击了美国海军的一个名为“Smart Web Move”的web应用。此次事件直接造成美国海军数据库超过22万服役人员的个人信息被泄露。而事后,美国海军动用了超过50万美元来弥补此次的数据泄密事故…

手把手教你使用sql注入来绕过游戏后台检测

SQL注入毫无疑问是最危险的Web漏洞之一,因为我们将所有信息都存储在数据库中。其解决方案之一,有许多公司实施Web应用程序防火墙和入侵检测/预防系统来试图保护自己。但不幸的是,这些对策往往是不充分的,并且很容易被绕过。 尽管不能依赖防火墙来防止所有SQL注入,但一些防…

JSON是什么?如何产生的?

JSON&#xff1a;是一种轻量级的数据交换方式&#xff0c;它是基于javascript的一个子集。JSON采用完全独立于语言的文本格式&#xff0c;但是也使用了类似于C语言家族的习惯这些特性使JSON成为理想的数据交换语言。易于人阅读和编写&#xff0c;同时也易于机器解析和生成。 掌…

设计模式 ---适配器模式

在一些业务场景里,你是否遇到过如下类似的需求: 1、系统需要使用现有的类,而此类的接口不符合系统的需要。 2、想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作,这些源类不一定有一致的接口。 3、通过接口转换…