LeetCode 725. 分隔链表

news/2024/5/20 23:22:51/文章来源:https://blog.csdn.net/qq_41046821/article/details/129189171

LeetCode 725. 分隔链表

难度:middle\color{orange}{middle}middle


题目描述

给你一个头结点为 headheadhead 的单链表和一个整数 kkk ,请你设计一个算法将链表分隔为 kkk 个连续的部分。

每部分的长度应该尽可能的相等:任意两部分的长度差距不能超过 1 。这可能会导致有些部分为 null 。

kkk 个部分应该按照在链表中出现的顺序排列,并且排在前面的部分的长度应该大于或等于排在后面的长度。

返回一个由上述 kkk 部分组成的数组。

示例 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, 1000][0,1000]
  • 0<=Node.val<=10000 <= Node.val <= 10000<=Node.val<=1000
  • 1<=k<=501 <= k <= 501<=k<=50

算法

(链表操作、模拟)

  1. 首先求出链表的长度 n
  2. 在每个分隔的链表求各自的长度 n / k 如果此时 n / k 不是一个整数,那么 n % k 就会存在余数,从前往后依次让分隔的链表长度 + 1
  3. 分隔链表的长度为 len 那么循环 len-1 次就可以走到该链表的最后一个位置。
  4. 在拆分之前需要存储 p 的后一个结点 next
  5. pnext 指针指向 null,完成 pnext 的拆分;
  6. next 赋值给 p

复杂度分析

  • 时间复杂度O(n)O(n)O(n),其中 nnn 是链表的长度。

  • 空间复杂度 : O(1)O(1)O(1)

C++ 代码

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}*     ListNode(int x) : val(x), next(nullptr) {}*     ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public:vector<ListNode*> splitListToParts(ListNode* head, int k) {int n = 0;for (auto p = head; p; p = p->next) n ++;vector<ListNode*> res;auto p = head;for (int i = 0; i < k; i ++) {//求出一段有多长int len = n / k;//如果不能整除,判断前面有几部分的长度需要加1if (i + 1 <= n % k) len ++;res.push_back(p);//求这一段链表的结尾for (int j = 0; j < len - 1; j ++) p = p->next;if (p) {auto q = p->next;//把这一段链表的结尾赋值为空p->next = NULL;//更新 pp = q;}}return res;}
};

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

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

相关文章

绿通科技在创业板开启申购:超额募资约19亿元,收入依赖贴牌

2月23日&#xff0c;广东绿通新能源电动车科技股份有限公司&#xff08;下称“绿通科技”&#xff0c;SZ:301322&#xff09;开启申购。据贝多财经了解&#xff0c;绿通科技本次上市的发行价为131.11元/股&#xff0c;发行数量为1749万股&#xff0c;市盈率73.75倍。 按发行价…

逆向 x品会 edata

逆向 x品会 edata 版本 7.88.6 帖子底部有参考说明 charles 抓包 目标字段 edata edata 搜索关键字 跟进找到是edata >>> KeyInfo native esNav 方法 private static native String esNav(Context context, String str, String str2, String str3, int i); …

XX项目自动化测试方案模板,你学会了吗?

目录 1、引言 2、自动化实施目标 3、自动化技术选型 4、测试环境需求 5、人员进度安排 总结感谢每一个认真阅读我文章的人&#xff01;&#xff01;&#xff01; 重点&#xff1a;配套学习资料和视频教学 1、引言 文档版本 版本 作者 审批 备注 V1.0 Vincent XXX …

不会前端没事,用GWT Boot和Spring Boot构建Web程序

本文介绍了一种使用Java构建Web应用程序的方式&#xff0c;其中GWT或者J2CL是必不可少的&#xff0c;另外还有多个UI框架可以配套使用&#xff0c;比如Domino UI、VueGWT、GWT Material Design (GMD)&#xff0c;React4J、WebFX&#xff0c;还有一些活跃低的框架GWTBootstrap3、…

【解决报错】‘jupyter‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件

在当前路径下使用cmd打开后&#xff0c;输入jupyter notebook出现如下错误&#xff1a; 通常可能出现的问题有两种&#xff1a; &#xff08;1&#xff09;你本身就没安装jupyter&#xff0c;如果你配置了anaconda&#xff0c;就自带jupyter&#xff0c;直接跳到问题2。如果确…

Apache Commons FileUpload Apache Tomcat拒绝服务漏洞解决方案

近日&#xff0c;安全狗应急响应中心关注到Apache官方发布安全公告&#xff0c;披露在Apache Commons FileUpload&#xff1c;1.5版本中存在一处拒绝服务漏洞&#xff08;CVE-2023-24998&#xff09;。Commons FileUpload是Apache组织提供的免费的上传组件。由于Apache Commons…

面向对象的一点小想法

接口里的方法可以写也可以不写 如果写的话&#xff0c;那么得是默认方法&#xff0c;需要在前面加个default 对于默认方法&#xff0c;能够重写&#xff0c;或者直接继承&#xff08;也就是直接用&#xff09; 比如下面&#xff1a; 就直接调用了接口的默认函数nibuhao&#…

R统计绘图-NMDS、环境因子拟合(线性和非线性)、多元统计(adonis2和ANOSIM)及绘图(双因素自定义图例)

这个推文也在电脑里待了快一年了&#xff0c;拖延症患者&#xff0c;今天终于把它发出来了。NMDS分析过程已经R统计-PCA/PCoA/db-RDA/NMDS/CA/CCA/DCA等排序分析教程中写过了。最近又重新看了《Numerical Ecology with R》一书,巩固一下知识&#xff0c;正好重新整理了一下发出…

Nacos源码启动

一、下载源码 为保证速度&#xff0c;国内推荐使用gitee&#xff1a;https://gitee.com/mirrors/Nacos.git 二、导入IDE中 参考之前文章配置国内Maven私服&#xff0c;快速更新工程。 三、启动过程&#xff0c;各种问题 找到启动入口&#xff1a; 先直接启动测试下&#xff…

oscp渗透测试认证该从哪里学起

当我决定要考OSCP时就马上打开浏览器&#xff0c;试图一下弄清楚课程内容和通过考试的方法&#xff0c;我不断的将指南和资源添加到书签中。渐渐的书签里存了许多资料&#xff0c;以至于我不知道从哪里开始学&#xff0c;学习命令吗&#xff1f;我学习编码吗&#xff1f;我使用…

北京/东莞/广州/深圳2023年上半年软考(中/高级)报名>>>

软考是全国计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试&#xff08;简称软考&#xff09;项目&#xff0c;是由国家人力资源和社会保障部、工业和信息化部共同组织的国家级考试&#xff0c;既属于国家职业资格考试&#xff0c;又是职称资格考试。 系统集成…

扩展学习之时间戳趣谈

目录 一、介绍 二、转换工具 三、获取Unix时间戳的指令 四、普通时间转Unix时间戳 五、扩展 一、介绍 时间戳&#xff1a;一份数据在特定时间点存在的可验证的数据。 Unix时间戳&#xff08;英文为Unix epoch, Unix time, POSIX time 或 Unix timestamp&#xff09;&…

valgrind 移植到arm64 平台上总结

valgrind 介绍valgrind是查找内存泄漏的神器&#xff0c;你可以自动的检测许多内存管理和线程的bug&#xff0c;避免花费太多的时间在bug寻找上&#xff0c;使得你的程序更加稳固。 下载地址&#xff1a;https://valgrind.org/downloads/ 本人下载的是valgrind-3.19.0valgrind编…

.Net与程序集

一个简单的C#程序回想一下我们第一个.net 程序 hello world&#xff0c;它具有那些步骤呢&#xff1f;打开visual studio创建一个C# console的项目build运行程序这时候就有一个命令行窗口弹出来&#xff0c;上面打印着hello world。我们打开文件夹的bin目录&#xff0c;会发现里…

百度前端一面高频react面试题指南

React 高阶组件、Render props、hooks 有什么区别&#xff0c;为什么要不断迭代 这三者是目前react解决代码复用的主要方式&#xff1a; 高阶组件&#xff08;HOC&#xff09;是 React 中用于复用组件逻辑的一种高级技巧。HOC 自身不是 React API 的一部分&#xff0c;它是一…

(考研湖科大教书匠计算机网络)第六章应用层-第七节:万维网WWW

获取pdf&#xff1a;密码7281专栏目录首页&#xff1a;【专栏必读】考研湖科大教书匠计算机网络笔记导航 文章目录一&#xff1a;万维网概述二&#xff1a;万维网应用&#xff08;1&#xff09;URI和URLA&#xff1a;URI和URL关系B&#xff1a;URL格式&#xff08;2&#xff09…

selenium自动化测试用例需要关注的几点

自动化测试设计简介注&#xff1a;参看文章地址 我们在本章提供的信息&#xff0c;对自动化测试领域的新人和经验丰富的老手都是有用的。本篇中描述最常见的自动化测试类型&#xff0c; 还描述了可以增强您的自动化测试套件可维护性和扩展性的“设计模式”。还没有使用这些技术…

数学小课堂:数学的用途(黄金分割)

文章目录 引言I 黄金分割1.1 几何图形的相似性1.2 自然界的物理学特征(螺旋线)1.3 利用数学指导音乐II 使用几何学技术将绘画变得逼真2.1 单点透视法2.2 视觉的数学原理(透视的视觉效果)引言 黄金分割比例大约是1:0.618,也就是1.618。符合黄金比例的雕塑或建筑就看上去很顺…

软件项目管理知识回顾---软件项目风险管理

软件项目风险管理 7.风险管理 7.1风险管理 1.风险管理&#xff1a;贯穿在项目开发中的一系列的管理过程。 2.风险管理过程&#xff1a;风险识别&#xff0c;风险计划&#xff0c;风险解决和风险监控 3.PMP风险管理过程 风险管理计划风险识别风险定量分析风险定性分析风险监控7.…

上海亚商投顾:沪指窄幅震荡 ChatGPT概念股全线下挫

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。市场情绪三大指数早盘小幅冲高&#xff0c;随后又震荡走低&#xff0c;午后一度集体翻绿&#xff0c;临近尾盘有所回升。Chat…