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

唐老鸭微信营销软件免费seo课程

唐老鸭微信营销软件,免费seo课程,虚拟主机搭建,网站建设用什么语言开发链表K个节点的组内逆序调整问题 作者:Grey 原文地址: 博客园:链表K个节点的组内逆序调整问题 CSDN:链表K个节点的组内逆序调整问题 题目描述 LeetCode 25. Reverse Nodes in k-Group 本题的 follow up 是: Fol…

链表K个节点的组内逆序调整问题

作者:Grey

原文地址:

博客园:链表K个节点的组内逆序调整问题

CSDN:链表K个节点的组内逆序调整问题

题目描述

LeetCode 25. Reverse Nodes in k-Group

本题的 follow up 是:

Follow-up: Can you solve the problem in O(1) extra memory space?

即用 O ( 1 ) O(1) O(1)的空间复杂度实现整个算法。

主要思路

本题需要设计两个方法:

第一个方法

ListNode getKGroupEnd(ListNode start, int k)

该方法表示:从链表start位置开始,数够k个位置,返回k个位置后的那个节点。

比如链表为:

...-> start -> b -> c -> d -> e

假设:k = 3

则:表示从start开始,数够 3 个,所以返回c节点

如果是下述情况

...-> start -> b -> c -> null

假设:k = 6

由于start后面不够 6 个节点,所以返回null,完整代码如下:

public static ListNode getKGroupEnd(ListNode start, int k) {while (--k != 0 && start != null) {start = start.next;}return start;
}

第二个方法void reverse(ListNode start, ListNode end),表示反转startend之间的链表。

例如:原链表为:

....->a->b->c->d->e....

假设:start = a, end = d

经过reverse方法,会变成

...d->c->b->a->e.....

reverse方法也相对比较简单,就是链表反转的一种特殊情况,实现代码如下:

public static void reverse(ListNode start, ListNode end) {end = end.next;ListNode pre = null;ListNode cur = start;while (cur != end) {ListNode tmp = cur.next;cur.next = pre;pre = cur;cur = tmp;}start.next = end;
}

有了上述两个方法,我们可以比较方便实现原题要求,主流程如下

public static ListNode reverseKGroup(ListNode head, int k) {ListNode start = head;ListNode end = getKGroupEnd(start, k);if (end == null) {return head;}// 第一组凑齐了!head = end;reverse(start, end);// 上一组的结尾节点ListNode lastEnd = start;while (lastEnd.next != null) {start = lastEnd.next;end = getKGroupEnd(start, k);if (end == null) {return head;}reverse(start, end);lastEnd.next = end;lastEnd = start;}return head;
}

整个过程时间复杂度 O ( N ) O(N) O(N),空间复杂度 O ( 1 ) O(1) O(1)

更多

算法和数据结构学习笔记

算法和数据结构学习代码

参考资料

算法和数据结构体系班-左程云

http://www.shuangfujiaoyu.com/news/33184.html

相关文章:

  • 天津做不锈钢的网站奶茶店推广软文500字
  • 北京市西城区社会建设网站南昌网站seo
  • 网站做后怎么可以在百度搜索到网络营销效果评估
  • 自己做的网站上传到关键词排名公司
  • java做的网站源码深圳网络营销策划公司
  • 北京企业网站建设费用百度认证中心
  • 昆山做企业网站网站优化入门免费教程
  • 郑州网站制作多少钱做外贸怎么推广
  • 安吉做企业网站网址域名
  • 做网站和网页手机黄页怎么找
  • 南通e站网站建设seo优化销售话术
  • 国外网站推广方法百度排行榜风云榜小说
  • 哪些网站可以用来做百科参考如何在百度上发表文章
  • 服务平台的宗旨seo研究中心倒闭
  • 全国企业信息管理系统seo站外推广有哪些
  • 一个新的网站怎么做宣传成都网络营销公司哪家好
  • 宁波企业制作网站网站免费推广平台
  • iis部署网站 红叉灰色词排名代做
  • 企业网站优化服务主要围绕哪些要素网站开发是做什么的
  • 三明网站建设百度关键词价格查询软件
  • 专业网站建设知识百度账号申诉
  • 烟台网站排名优化价格百度一下了你就知道官网
  • 做网站手机版和电脑版怎么区分南昌百度网站快速排名
  • 网络服务商在哪黑帽seo技巧
  • wordpress模板标签西安分类信息seo公司
  • 网站站长seo推广上海优化公司排行榜
  • 如何在网站做投票公司网站制作费用
  • 工业园企业建设网站公司宝塔没有域名直接做网站怎么弄
  • 网络营销案例小故事分享seo优化人员
  • 做论坛网站需要备案贵州二级站seo整站优化排名