leetcode725. 分隔链表(java)

分隔链表

  • 题目描述
    • 拆分链表
    • 代码演示

题目描述

给你一个头结点为 head 的单链表和一个整数 k ,请你设计一个算法将链表分隔为 k 个连续的部分。
每部分的长度应该尽可能的相等:任意两部分的长度差距不能超过 1 。这可能会导致有些部分为 null 。
这 k 个部分应该按照在链表中出现的顺序排列,并且排在前面的部分的长度应该大于或等于排在后面的长度。
返回一个由上述 k 部分组成的数组。

示例1:
在这里插入图片描述
输入:head = [1,2,3], k = 5
输出:[[1],[2],[3],[],[]]
解释:
第一个元素 output[0] 为 output[0].val = 1 ,output[0].next = null 。
最后一个元素 output[4] 为 null ,但它作为 ListNode 的字符串表示是 [] 。

示例2:
在这里插入图片描述输入:head = [1,2,3,4,5,6,7,8,9,10], k = 3
输出:[[1,2,3,4],[5,6,7],[8,9,10]]
解释:
输入被分成了几个连续的部分,并且每部分的长度相差不超过 1 。前面部分的长度大于等于后面部分的长度。

提示:
链表中节点的数目在范围 [0, 1000]
0 <= Node.val <= 1000
1 <= k <= 50
在这里插入图片描述

拆分链表

题目要求将给定的链表分隔成 kkk 个连续的部分。由于分隔成的每个部分的长度和原始链表的长度有关,因此需要首先遍历链表,得到链表的长度 nnn。
得到链表的长度 n 之后,记 quotient=⌊n / k⌋,remainder=n % k,则在分隔成的 k 个部分中,前 remainder个部分的长度各为 quotient+1,其余每个部分的长度各为 quotient。
分隔链表时,从链表的头结点开始遍历,记当前结点为 curr,对于每个部分,进行如下操作:

  1. 将curr 作为当前部分的头结点;
  2. 计算当前部分的长度 partSize;
  3. 将 curr向后移动 partSize步,则 curr为当前部分的尾结点;
  4. 当 curr 到达当前部分的尾结点时,需要拆分 curr 和后面一个结点之间的连接关系,在拆分之前需要存储 curr的后一个结点 next;
  5. 令 curr的 next 指针指向 nul,完成 curr 和 next 的拆分;
  6. 将 next赋值给 curr。

代码演示

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode() {}*     ListNode(int val) { this.val = val; }*     ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode[] splitListToParts(ListNode head, int k) {int n = 0;ListNode temp = head;while (temp != null) {n++;temp = temp.next;}int quotient = n / k, remainder = n % k;ListNode[] parts = new ListNode[k];ListNode curr = head;for (int i = 0; i < k && curr != null; i++) {parts[i] = curr;int partSize = quotient + (i < remainder ? 1 : 0);for (int j = 1; j < partSize; j++) {curr = curr.next;}ListNode next = curr.next;curr.next = null;curr = next;}return parts;}}

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

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

相关文章

倾情奉献,纯css(无图,无JS)原创中秋贺卡!!!

&#x1fab4; 背景故事 中秋节马上就要到了&#xff0c;在这里我提前祝大家生活美满万年长&#xff0c;阖家幸福永平安&#xff01;&#x1f973; 好了进入正题&#xff0c;最近掘金出了一个“中秋创意投稿”活动&#xff0c;我向来对这种可以写一些具有创意性的代码的活动很…

二叉树题目:层数最深叶子结点的和

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 题目 标题和出处 标题&#xff1a;层数最深叶子结点的和 出处&#xff1a;1302. 层数最深叶子结点的和 难度 4 级 题目描述 要求 给定一个二叉树…

Qt的ui文件不能简单复制

在使用vsQt开发时&#xff0c;直接复制另外一个widget类的ui文件&#xff0c;简单改名成当前类对应的ui文件&#xff0c;会导致编译出错。尽可能使用添加的Qt class自带的ui文件&#xff0c;因为ui文件的配置文件中有许多与当前类相关的字符串&#xff0c;简单复制容易报错。

FE_Vue学习笔记 - 组件的理解vue vc

1 单文件组件 在Vue应用中&#xff0c;单文件组件&#xff08;Single File Components&#xff09;是一种特殊的文件格式&#xff0c;以 .vue 为后缀&#xff0c;它允许开发者在一个文件中定义一个Vue组件的全部内容。 每个单文件组件由三个部分组成&#xff1a;template&…

Flutter插件的制作和发布

Flutter制作插件有两种方式&#xff08;以下以android和ios为例&#xff09;&#xff1a; 目录 1.直接在主工程下的android和ios项目内写插件代码&#xff1a;2.创建独立Flutter Plugin项目&#xff0c;制作各端插件后&#xff0c;再引入项目&#xff1a;1. 创建Flutter Plugin…

STL list

文章目录 一、list 类的模拟实现 list 是一个带头双向循环链表&#xff0c;可以存储任意类型 模板参数 T 表示存储元素的类型&#xff0c;Alloc 是空间配置器&#xff0c;一般不用传 一、list 类的模拟实现 iterator 和 const_iterator 除了下述不同外&#xff0c;其他代码基…

【新版】系统架构设计师 - 软件架构设计<新版>

个人总结&#xff0c;仅供参考&#xff0c;欢迎加好友一起讨论 文章目录 架构 - 软件架构设计&#xff1c;新版&#xff1e;考点摘要概念架构的 4 1 视图架构描述语言ADL基于架构的软件开发方法ABSDABSD的开发模型ABSDMABSD&#xff08;ABSDM模型&#xff09;的开发过程 软件架…

思维导图怎么画好看又简单?看看这个方法

思维导图怎么画好看又简单&#xff1f;思维导图是一种非常有用的工具&#xff0c;可以帮助我们组织和展示思维。如果你想要画出既好看又简单的思维导图&#xff0c;那么我们可以使用一些思维导图制作工具。下面就给大家介绍一款个人觉得很好用的思维导图制作工具。 【迅捷画图】…

金蝶云星空各种部署架构及适用场景分享

> 随着公司的快速发展上市到进入世界500强&#xff0c;作为技术经理&#xff0c;负责了金蝶云星空从单点部署到集群&#xff0c;再到替换SAP的过程&#xff0c;如今项目已经成功上线&#xff0c;所以对金蝶的相关知识也做下整理和归档。 > 在项目实施过程中&#xff0c;部…

Java实现图书管理系统

一、分析有主要对象 二、整理思路 三、框架的搭建 四、操作内部的具体实现 一、分析主要对象 我们做的图书管理系统的目的&#xff0c;是可以根据不同的用户&#xff0c;所能执行的操作不一样&#xff0c;主要有增删查改图书等操作&#xff0c;选择这些不同的操作会给我们反…

php预约系统源码 网上预约小程序开发源码 整套系统搭建让在线预约更便捷

随着互联网技术的发展&#xff0c;越来越多的服务行业开始通过网上预约系统来实现便捷的客户管理和服务提供。PHP预约系统源码作为一种成熟的技术方案&#xff0c;可以帮助商家快速搭建自己的预约系统&#xff0c;提高工作效率&#xff0c;优化客户体验。 分享一个php预约系统…

插槽指的是什么?插槽的基础用法体验

什么是插槽 插槽(Slot)是 vue 为组件的封装者提供的能力。允许开发者在封装组件时&#xff0c;把不确定的、希望由用户指定的部分定义为插槽。 <template><p>这是MyCom1组件的第1个p标签</p><&#xff01;--通过slot标签&#xff0c;为用户预留内容占位符…