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

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

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

进阶:

你可以设计一个只使用常数额外空间的算法来解决此问题吗?
你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。

示例 1:

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-nodes-in-k-group

例:

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

解析:每k个节点一个轮回,然后在轮回里进行“掉头”,用开头指向下一个轮回开头,然后后面的节点一一接上。最后不足k个节点不进轮回。

# Definition for singly-linked list.
# class ListNode(object):
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution(object):def reverseKGroup(self, head, k):""":type head: ListNode:type k: int:rtype: ListNode"""cur = headcount = 0while cur and count != k:  # 将cur标记在下一个轮回的头节点cur = cur.nextcount += 1if count == k:  # 轮回cur = self.reverseKGroup(cur, k)  # 将指针指向后续排序好的链表while count:tmp = head.next  # 先将二号为标记head.next = cur  # 将轮回1的头节点的next节点指向下一个轮回的头节点cur = head  # cur指针作为被指向的节点head = tmp  # 头指针指向刚刚标记好的二号节点count -= 1  # 每完成一次排序,就将计数减少1head = cur  # 最后的cur指针指向当前轮回更新后的第一个节点return head  # 返回当前轮回

K 个一组翻转链表Python解法相关推荐

  1. 清晰易懂的“K个一组翻转链表”解法

    题目来源:Leetcode K个一组翻转链表 一.题目 给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表. k 是一个正整数,它的值小于或等于链表的长度. 如果节点总数不是 k 的整数倍 ...

  2. K 个一组翻转链表(递归,Kotlin)

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

  3. 链表经典题:K个一组翻转链表

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

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

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

  5. 20200329:K 个一组翻转链表(leetcode25)

    K 个一组翻转链表 题目 思路与算法 代码实现 复杂度分析 题目 思路与算法 注意题目里的常数的额外空间的要求,意味着不可以使用栈之类的数据结构. 这道链表题实际就是上一道的进阶版,指定每k个进行翻转 ...

  6. LeetCode--第25题K个一组翻转链表

    LeetCode–第25题K个一组翻转链表 题目描述 解决方案–C语言 主体是用递归的办法.递归三要素: 1.向上返回什么:一个处理好的子链表 2.返回条件是什么:要么是处于好了子链表,要么是因长度小 ...

  7. 哔哩哔哩2020校园招聘 - K个一组翻转链表 一年中的第几天

    1.K个一组翻转链表 题目描述: 给你一个链表,每 k 个节点一组进行翻转,请返回翻转后的链表. 如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序. 示例 : 给定这个链表:1-&g ...

  8. 由力扣K 个一组翻转链表到360原创题

    前段时间帮对象做360笔试题时,遇到一个没怎么想明白的编程题,直到今天刷力扣遇到了相似的k个一组翻转链表后,想着在做一下那天的编程题,就想着记录一下遇到的难点. 力扣题如下图所示: 360原创题如下: ...

  9. Leetcode-递归/反转链表模板-25. K 个一组翻转链表

    题目25. K 个一组翻转链表: 题解: 模拟 以K个为一组,进行常规反转,重点是要保留反转前的头节点,以及第K+1个节点,将其反转之后连接起来 代码: /*** Definition for sin ...

最新文章

  1. c语言如何持续输入字符直到指定字符结束_《小白学C》第三章 常用输入输出函数...
  2. python网络信息提取_python网络爬虫与信息提取I
  3. php实现tcp连接esp8266,ESP8266之TCP透传
  4. 自己动手写web服务器一(浏览器的访问信息)
  5. 一群猴子排成一圈,按1,2,...,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈...
  6. Spring Boot Starters介绍
  7. hibernate数据类型与OR映射
  8. 字符设备驱动基础篇5——驱动如何操控硬件(动静态映射操作LED)
  9. Ansible 安装
  10. java中setStroke_Java调用setStroke()方法设置笔画属性的语法 原创
  11. 关于行内元素的margin padding一些说明;background-color的范围
  12. linux 5.5 外接usb2.0硬盘,RHEL5 使用pam_usb
  13. oracle10g 杨忠民,开题报告 基于J2EE的DRP系统设计
  14. HTML网页设计制作——响应式网页影视动漫资讯bootstrap网页(9页)
  15. 什么是DTC?为什么国内外如此火爆
  16. idea在 keymap下的eclipse的快捷键
  17. 东财《领导科学X》综合作业
  18. C++程序调用第三方exe进程(例如Go语言开发的程序)
  19. 西门子精彩屏+精简屏+精智屏设置屏保功能的具体方法和步骤
  20. VUE DEMO 之模拟登录 个人中心页面之间数据传值

热门文章

  1. 为什么最近的食盐用量增加了?
  2. 基于 Angular 的企业级 Web 应用服务器端渲染的推荐建构
  3. Angular Universal 学习笔记
  4. 使用 SAP UI5 系统测试工具 UIVeri5 的一个具体例子
  5. Angular router-outlet占位符层级结构的子节点,运行时是如何插入的
  6. SAP Spartacus B2B Org Unit树状结构的加载机制
  7. Angular refreshView的执行原理
  8. 计算机世界的虚拟机,容器和医学界的人工硬脑膜
  9. SAP Fiori Elements drop down list debug
  10. SAP Cloud Platform approuter的本地安装