java数据结构与算法刷题-----LeetCode725. 分隔链表

2-6-1-1 QNX编程入门之进程和线程(一) 文章围绕进程和线程展开介绍。先是将进程类比为房子,线程类比为居住者,阐述其基本概念,如进程占用内存,线程可共享内存。接着讲解同步相关内容,介绍了互斥,线程通过互斥锁来控制对特定资源的访问,像使用浴室一样。还提到优先级,线程按优先级和等待时长来决定获取资源顺序。此外,说明了信号量,以厨房为例,区分计数为 1 和大于 1 的信号情况,且指出信号量可当互斥锁用,但互斥锁是特殊用途信号量,二者存在区别,最后提及后续会介绍其他同步机制。 阅读详情
java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.youkuaiyun.com/grd_java/article/details/123063846

在这里插入图片描述

解题思路
  1. 首先获取链表长度,假设是10,让我们分3块
  2. 然后获取每块应该分多少块,quotient = 10/3 = 3个,然后获取平均分完后,还剩几块remainder = 10%3 = 1个。
  3. 题目要求各块之间长度差距不能超过1,所以remainder中多余的,我们每块匀一个。
  4. 为什么一定可以匀一个,匀完呢?因为我们是10%3,我们要分3大块,剩下的不够平均给这3大块才剩下的。所以它一定小于块数。 因此每块分一个它都不够分。
  5. 另外,链表它是一个结点连着一个结点的。题目要求分块,那么分块后的结点就不能继续连着了,所以还需要把每块末尾的结点的next置为null。
代码:时间复杂度O(n) 空间复杂度O(1)

在这里插入图片描述

/**
 * 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) {
        /****第一步,先遍历一遍链表,获取链表长度 */
        ListNode current = head;
        int count = 0;
        while(current!=null){
            count++;
            current=current.next;
        }
        /***第二步,算出分k块时,每块应该分多少记录到quotient,如果除不开(没法正好分完,有剩余),
        就记录到remainder,因为是除不开留下的,肯定比k小,所以,多余的remainder这些
        只需要前面每块匀一个即可,因为题目要求,块与块之间元素个数差,不能大于1个,所以多余的,每个块只能匀一个 */
        ListNode[] listNodes = new ListNode[k];//题目要求的答案数组
        current = head;//current继续充当遍历指针
        int quotient = count/k;//每块分多少
        int remainder = count%k;//剩多少,remainder绝对会比块数少,所以多出来的,我们在前面的块中,每块分一个
        /***第三步, 每块分quotation个,另外如果remainder有剩余,只能给当前块匀一块
        另外,每块分完结点后,这块末尾的结点的next要置为null,否则它会连着其它结点,无法判断分块点在哪*/
        for(int i = 0;i < k && current!=null;i++){
            listNodes[i] = current;//让当前块,指向current
            // int partSize = quotient + (remainder>0?1:0); remainder--;//因为这样写需要两行代码,下面这种只需要一行代码,效果相同
            int partSize = quotient + (i < remainder?1:0);//如果还有多余的块,就给当前块多分一块,否则多分0块
            for(int j = 1;j<partSize;j++) current = current.next;//找到当前块的末尾结点,方便我们将分块点.next置为null
            ListNode next = current.next;//记录current的next,放置置为null后,next丢失
            current.next = null;//让current的next为null,否则一直连着后面的,就不知道哪块是哪块了
            current = next;//然后current指向next,继续遍历
        }
        return listNodes;//返回答案数组
    }
}
研发工作量科学量化评估模型:从多维系数到等级落地指南 摘要:本文提出了一套基于多维系数的科学量化评估模型,用于精准评估软件开发工作量。该模型从需求复杂度、技术难度、质量要求和依赖风险四个核心维度进行量化评估,通过系数乘积计算综合工作量。文章详细说明了各维度的系数区间划分标准,并演示了从基础工作量估算到综合系数计算的具体步骤。该模型通过结构化评估过程,将主观经验转化为客观量化指标,帮助团队提高工作量评估的准确性,增强项目交付的可预测性。其价值在于使评估过程透明化、结构化和可追溯,从而减少项目延期风险,优化资源规划。 阅读详情

相关推荐

yolov8的Detect层详解(输出维度改动)

对于部署端需要拿到onnx的output进行后处理,但是基于anchor_free的yolov8输出是1*(4+cls)*8400,不是我们常见的ncwh格式,所以对Detect层进行了学习,分享一下体会。

yjcccccc的博客 2万+

Java实现 LeetCode 725 分隔链表(暴力)

725. 分隔链表 给定一个头结点为 root 的链表, 编写一个函数以将链表分隔为 k 个连续的部分。 每部分的长度应该尽可能的相等: 任意两部分的长度差距不能超过 1,也就是说可能有些部分为 null。 这k个部分应该按照在链表中出现的顺序进行输出,并且排在前面的部分的长度应该大于或等于后面的长度。 返回一个符合上述规则的链表的列表。 举例: 1->2->3->4, k = ...

南 墙 1万+

从零部署思澈科技SiFli-Solution:避坑指南与实战排错

本文详细介绍了从零部署思澈科技SiFli-Solution开发环境的完整流程与实战排错指南。重点解析了Keil uVision5版本选择、Butterfli工具路径配置等关键步骤,并针对Keil路径报错、函数冲突等高频问题提供了具体解决方案,帮助开发者高效避坑,快速搭建稳定的嵌入式开发环境。

devops8pract的博客 530

Leetcode725. 分隔链表

Leetcode725. 分隔链表 题目: 给定一个头结点为 root 的链表, 编写一个函数以将链表分隔为 k 个连续的部分。 每部分的长度应该尽可能的相等: 任意两部分的长度差距不能超过 1,也就是说可能有些部分为 null。 这k个部分应该按照在链表中出现的顺序进行输出,并且排在前面的部分的长度应该大于或等于后面的长度。 返回一个符合上述规则的链表的列表。 举例: 1->2->3->4, k = 5 // 5 结果 [ [1], [2], [3], [4], null ] 示例 1:

会流泪de鱼的博客 291

PWM调光原理详解:为什么你的LED灯会闪烁?从硬件到软件的避坑指南

本文深入解析PWM调光原理,揭示LED灯闪烁的根本原因,并提供从硬件设计到软件算法的全面解决方案。通过分析人眼视觉暂留机制和PWM参数设置,帮助开发者避免频闪问题,提升照明质量。特别适合电子工程师和智能家居开发者参考。

weixin_29189363的博客 295

离线反激转换器反馈环路设计:从理论到实践的Type II补偿器详解

在开关电源设计中,反馈环路稳定性是决定电源性能与可靠性的核心。其本质是通过补偿网络对功率级的小信号特性进行校正,以构建一个具有足够相位裕度和增益裕度的闭环系统。反激转换器作为一种广泛应用的隔离拓扑,其功率级在连续导通模式(CCM)和非连续导通模式(DCM)下呈现不同的零极点特性,这直接决定了补偿器的选型。Type II补偿器因其传递函数中固有的积分环节、低频零点与高频极点,恰好能与反激功率级的1P2Z(一个极点、两个零点)特性形成互补,有效塑造理想的回路增益曲线,实现快速稳定的动态响应。本文聚焦于采用TL4

weixin_30162121的博客 504

Leetcode(java,python题解):725.分隔链表

725.分隔链表 题目描述 Leetcode:https://leetcode-cn.com/problems/split-linked-list-in-parts/ 给定一个头结点为 root 的链表, 编写一个函数以将链表分隔为 k 个连续的部分。 每部分的长度应该尽可能的相等: 任意两部分的长度差距不能超过 1,也就是说可能有些部分为 null。 这k个部分应该按照在链表中出现的顺序进行输出...

_淡泊宁静的博客 217

安卓应用锁开发实战:如何通过拦截Activity启动实现密码验证(附完整代码)

本文深入探讨了在安卓系统中开发应用锁功能的两种实战方案:通过修改ActivityStarter源码或实现IActivityController接口来拦截Activity启动流程,从而实现启动前的密码验证。文章详细对比了两种方案的技术选型、实现细节与适用场景,并提供了处理隐式Intent、验证状态管理等核心问题的完整代码,为开发系统级安全功能提供了实用指南。

tcp8optimizer的博客 461

leetcode刷题记录

刷题过程记录

洪肥肥的博客 2063

2025届程序技术类笔试题

希尔排序在直接插入排序的基础上进行了改进,它通过比较相距一定间隔的元素来进行,各轮比较所用的距离随着算法的进行而减小,直到只比较相邻元素的最后一轮排序为止。某人逆着水流的方向向岸边划船,每次行进前进x米后需要休息一下,休息期间船会自行倒退y米,每次休息后再次行进,前进距离缩短1/5,若起始距离岸边为m米,问:能否到达岸上,需要行进多少次才能上岸。直接插入排序的原理是将第i个元素插入前面i-1个已排好序的记录中,将比第i个元素大的记录依次向后移动一个位置,将第i个元素插入空位。第二轮相邻比较,后移2次。

博客 599

24、手机GPS天线设计与有源GNSS天线性能评估

本文系统介绍了手机GPS天线的代表性设计,包括隔离磁偶极子、共面平衡偶极子和小型陶瓷加载QHA天线,分析了其结构特点、性能参数及适用场景。同时详细阐述了有源GNSS天线的组成结构与G/T比作为关键性能指标的评估方法,并提出了组件选择、噪声控制和增益提升等优化策略。最后展望了未来手机GPS天线在小型化、多频集成和智能适应性方面的发展趋势。

pytorch8learner的博客 725

力扣(LeetCode)725 分隔链表(Java)

class Solution { public ListNode[] splitListToParts(ListNode root, int k) { // 创建结果链表数组 ListNode[] result = new ListNode[k]; // 如果输入的链表是个空链表 if (root == null) { for (int i = 0; i < k ; i++) {

tengfei308的博客 265

【XAI】透视深度学习:CNN与Transformer的可解释性方法

深度学习模型的可解释性方法解析:本文探讨了CNN和Transformer两类主流模型的可解释性技术。针对CNN,介绍了显著性图、类激活图(CAM/Grad-CAM)和基于扰动的方法,通过可视化重要像素区域揭示决策依据。对于Transformer,重点分析了注意力机制可视化及其在文本处理中的应用,并介绍了积分梯度等归因方法。文章包含详细的Python实现示例(使用Captum库),涵盖从MNIST图像显著性分析到BERT文本注意力可视化,为初学者提供了可操作的技术指南。这些方法有助于增强模型透明度,提升AI系

u012133341的博客 382

[LeetCode]725. 分隔链表(java实现)

[LeetCode]725. 分隔链表(java实现)1. 题目2. 读题(需要重点注意的东西)3. 解法4. 可能有帮助的前置习题5. 所用到的数据结构与算法思想6. 总结 1. 题目 2. 读题(需要重点注意的东西) 返回的是一个存放着头节点的数组; l = len/ k为每组的长度 r = len % k为余数 链表前面部分的长度应该大于后面部分的长度 思路: 用l表示每段的平均长度,如5个节点分为3段,5/3=1,平均长度为1,此时每段的长度分布为 : [[1],[1],[1]],但是1+1+

cloud的博客 159

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

算法修炼之路——【链表】Leetcode 725 分隔链表

文章目录题目描述思路分析难点分析解题步骤解题代码复杂度分析GitHub源码 题目描述 给定一个头节点为root的链表,编写一个函数,将链表分隔为k个连续的部分。 每部分的长度应该尽可能的相等:认一两部分的长度差距不能超过1,也就是说可能有些部分为null; 这k个部分应该按照在链表中出现的顺序进行输出,并且排在前面的部分的长度大于等于后面的长度。 返回一个符合上述规则的链表的列表。 示例1: 输...

技术更新每天 334

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

LeetCode725 分隔链表(平均切分链表)

分隔链表 package CLinkedList; import com.sun.org.apache.bcel.internal.generic.NEW; /** * @Author Zhou jian * @Date 2020 ${month} 2020/4/11 0011 13:03 */ public class Problem725 { //还没调试成功,不过...

ZHOUJIAN_TANK的博客 298

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

LeetCode 725. 分隔链表

题目: 给定一个头结点为 root 的链表, 编写一个函数以将链表分隔为 k 个连续的部分。 每部分的长度应该尽可能的相等: 任意两部分的长度差距不能超过 1,也就是说可能有些部分为 null。 这k个部分应该按照在链表中出现的顺序进行输出,并且排在前面的部分的长度应该大于或等于后面的长度。 返回一个符合上述规则的链表的列表。 举例: 1-&gt;2-&gt;3-&gt;4, k = 5 //...

xiao1guaishou的博客 207

Leetcode-725:分隔链表

描述: 思路: 按照题意,首先求出链表中节点个数count: 如果count <= k,表示每个子节点存在于结果数组中; 如果k > count,把链表分为k份,每份至少有count/k个元素,未分配元素为count%k,因为未分配元素在范围为[0,k),所以给每份元素数从前到后+1,以满足题目条件 如果8个元素分...

LifeIsGood 324

9. 链表 - 分隔链表

1.题目 LeetCode: 725. 分隔链表 【medium】 给定一个头结点为 root 的链表, 编写一个函数以将链表分隔为 k 个连续的部分。 每部分的长度应该尽可能的相等: 任意两部分的长度差距不能超过 1,也就是说可能有些部分为 null。 这k个部分应该按照在链表中出现的顺序进行输出,并且排在前面的部分的长度应该大于或等于后面的长度。 返回一个符合上述规则的链表的列表。 举例: 1->2->3->4, k = 5 // 5 结果 [ [1], [2], [3], [4],

一杯红酒7的博客 232

【力扣题解】725. 分隔链表

链表

爱做梦的猪的博客 253

JAVA程序设计:分隔链表(LeetCode:725)

给定一个头结点为 root 的链表, 编写一个函数以将链表分隔为 k 个连续的部分。 每部分的长度应该尽可能的相等: 任意两部分的长度差距不能超过 1,也就是说可能有些部分为 null。 这k个部分应该按照在链表中出现的顺序进行输出,并且排在前面的部分的长度应该大于或等于后面的长度。 返回一个符合上述规则的链表的列表。 举例: 1->2->3->4, k = 5 // 5...

信仰.的博客 337

725. 分隔链表 ( 模拟 )

LeetCode:725. 分隔链表 题目要求返回得是一个数组, 即在链表中间进行多次切割,使得切割点处 node.next = null 思路: 要分几组, 一组几个, 然后多出了几个,要一个一个的分别加到其他组中,使得任意两组的数量差不超过 1 个 重点想出两条公式 分为 k 组 一组 len / k 个节点 剩余 len % k 个 ,轮流放入一个到不同的组中, 这样任意两组的节点数量相差都不会超过 1 AC Code /** * Definition for singly-linked

lankerens 314

leetcode 725. Split Linked List in Parts | 725. 分隔链表(Java)

题目 https://leetcode.com/problems/split-linked-list-in-parts/ 题解 hint: If there are N nodes in the list, and k parts, then every part has N/k elements, except the first N%k parts have an extra one. /** * Definition for singly-linked list. * public class

寒泉 4万+

leetcode 725. 分隔链表

题目 思路 首先遍历节点,计算链表长度,建立数组list,记录该节点应该是一个多长的链,然后使用两个指针,一个指向当前节点一个指向上一个节点,用来断开链表,存入结果数组res 时间 代码 class Solution { public ListNode[] splitListToParts(ListNode root, int k) { ListNode node=ro...

一个小白的日常 272
上一篇: java数据结构与算法刷题-----LeetCode445. 两数相加 II
下一篇: java数据结构与算法刷题-----LeetCode328. 奇偶链表
ydenergy_殷志鹏
博客等级 码龄7年 5887粉丝 543原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ydenergy_殷志鹏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值