LeetCode 25 k组一个翻转链表


TITLE

示例 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]

示例 3:

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

输出:[1,2,3,4,5]

示例 4:

输入:head = [1], k = 1

输出:[1]

(PS:还是加上title吧不然太难受了)

前言:LeetCode难度hard,本体解决为链表分组处理的思想,分组进行链表翻转之后在进行链接,不知道为什么写了两天,秀逗了.


题目分析

首先实现翻转链表的方法此题用‘递归-回溯’的方法比较简单,需要注意的一点是在‘递归-回溯’结束时返回的节点为之前的头节点,所以注意预处理局部链表的头尾指针,并且在一组结束的时候对下一组的头尾指针进行预处理。

  1. 分组链表
  2. 初始化头尾指针
  3. 指针移动记位,当长度为一组进行反转
  4. 链表之间的链接处理
  5. 反转后初始化头尾指针

    总结。2345循环执行

执行耗时:0 ms,击败了100.00% 的Java用户

内存消耗:41.4 MB,击败了5.10% 的Java用户

链表反转
private ListNode swapGroup(ListNode head,int k){
if(k == 1){
return head;
}
ListNode next = swapGroup(head.next,k - 1);
head.next = null;
next.next = head;
return head;
}
分组处理链表
public ListNode reverseKGroup(ListNode head, int k) {
int mark = k;
ListNode header = new ListNode();//头节点指针作为答案返回
ListNode pointer_fast = new ListNode();//移动指针
ListNode pointer_slow = new ListNode();//头指针
//指针初始化
header.next = head;
pointer_slow = header;
pointer_fast = header;
//头尾链接处理的中间指针
ListNode pre = new ListNode();
int size = 0;
while(pointer_fast!=null){
if(size == k){
//交换之前预备处理 分组之间的头尾链接预处理数据
pre = pointer_fast.next;
//接收原来分组链表的头节点现在的尾节点
ListNode callBack = swapGroup(pointer_slow.next,k);
//头尾链接处理
callBack.next = pre;
pointer_slow.next = pointer_fast;
//初始化指针处理
pointer_fast = callBack;
pointer_slow = callBack;
size = 0;
}
if(pointer_fast==null)break;
pointer_fast = pointer_fast.next;
size++;
}
return header.next;
}

[链表]LeetCode 25 K组一个翻转链表的更多相关文章

  1. Java实现 LeetCode 25 K个一组翻转链表

    25. K 个一组翻转链表 给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表. k 是一个正整数,它的值小于或等于链表的长度. 如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持 ...

  2. leetcode 25. K 个一组翻转链表

    # coding:utf-8 __author__ = "sn" """ 25. K 个一组翻转链表 给你一个链表,每 k 个节点一组进行翻转,请你返 ...

  3. LeetCode 25. K 个一组翻转链表 | Python

    25. K 个一组翻转链表 题目来源:https://leetcode-cn.com/problems/reverse-nodes-in-k-group 题目 给你一个链表,每 k 个节点一组进行翻转 ...

  4. LeetCode 25 —— K 个一组翻转链表

    1. 题目 2. 解答 首先,利用快慢指针确定链表的总结点数. 偶数个结点时,结点个数等于 i * 2. 奇数个结点时,结点个数等于 i * 2 + 1. 然后将链表的每 K 个结点划分为一组.循环对 ...

  5. [LeetCode] 25. k个一组翻转链表

    题目链接: https://leetcode-cn.com/problems/reverse-nodes-in-k-group/ 题目描述: 给出一个链表,每 k 个节点一组进行翻转,并返回翻转后的链 ...

  6. [LeetCode] 25. K 个一组翻转链表 ☆☆☆☆☆(链表)

    https://leetcode-cn.com/problems/reverse-nodes-in-k-group/solution/javadi-gui-fang-fa-100-by-chadriy ...

  7. LeetCode 25. k个一组翻转链表(Reverse Nodes in k-Group)

    题目描述 给出一个链表,每 k 个节点一组进行翻转,并返回翻转后的链表. k 是一个正整数,它的值小于或等于链表的长度.如果节点总数不是 k 的整数倍,那么将最后剩余节点保持原有顺序. 示例 : 给定 ...

  8. leetcode 24. 两两交换链表中的节点 及 25. K 个一组翻转链表

    24. 两两交换链表中的节点 问题描述 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表. 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换. 示例: 给定 1->2-> ...

  9. Leetcode题库——25.k个一组翻转链表

    @author: ZZQ @software: PyCharm @file: ReverseList.py @time: 2018/11/6 15:13 题目要求:给出一个链表,每 k 个节点一组进行 ...

随机推荐

  1. element-ui 使用 Select 组件给 value 属性绑定对象类型

    qq_36437172 2020-06-28 22:38:49  778  收藏 分类专栏: element-ui 文章标签: element-ui Select 组件 value 属性 绑定 对象类 ...

  2. Android 三种菜单(Menu)的实现

    感谢大佬:https://blog.csdn.net/chileme/article/details/82944764 一.常用方法 java onCreateOptionsMenu(Menu men ...

  3. NSSet和NSMutableSet - By吴帮雷

    1.NSSet的使用 [NSSet setWithSet:(NSSet *)set]; 用另外一个set对象构造 [NSSet setWithArray:(NSArray *)array];用数组构造 ...

  4. SQL 游标 指针

    DECLARE @radioScoreRate decimal DECLARE @checkScoreRate decimal DECLARE @judgeScoreRate decimal DECL ...

  5. JQgrid实现全表单元格编辑

    1 jQuery("#baseWageDataValueGrid").jqGrid('setGridParam',{'cellEdit':true}); 2 3 //修改所有td ...

  6. 一个好用的多方隐私求交算法库JasonCeng/MultipartyPSI-Pro

    Github链接传送:JasonCeng/MultipartyPSI-Pro 大家好,我是阿创,这是我的第29篇原创文章. 今天是一篇纯技术性文章,希望对工程狮们有所帮助. 向大家推荐一个我最近改造的 ...

  7. 【高频Java面试题】简单说说JVM堆的内存结构和GC回收流程

    目录 前言 JVM堆内存结构简述 JVM堆内存结构图 堆初体验 结构详情 新生代 老年代 永久代/元空间 GC回收流程 GC回收流程图 GC回收详细流程 查看JDK自带可视化堆空间图 总结 前言 我们 ...

  8. log4j、logback日志框架与统一接口slf4j说明

    log4j 传入日志框架,老项目中使用较多. 日志级别 根日志级别 log4j.rootLogger=info 默认日志级别,设置后对于没有设置子级别的日志输出都走这个默认值. 子类日志级别 log4 ...

  9. 国内外主流5款doshboard软件比较和对比

    大数据行业随着互联网的蓬勃发展中也越来越被人们看好,但是从事大数据行业的数据分析师经常会谈到dashboard,很多人就会疑惑什么是dashboard,下面就来了解一下Doshboard的发展. da ...

  10. 案例三:shell统计ip访问情况并分析访问日志

    题目要求 有日志 1.log,部分内容如下: 112.111.12.248 – [25/Sep/2013:16:08:31 +0800]formula-x.haotui.com"/secco ...