• Leetcode 725


    我们第一轮肯定是要全部扫描一遍链表,否则我们不知道链表长度,分割也就无从谈起。

    再看分割条件,划分为元素个数为k的数组,那么我们只需要计算出一个部分的长度,然后在第二次遍历链表的时候,把每个部分的第一个节点加入数组中,最后一个节点的next设为null即可。

    那么一个部分的数量得是多少合适呢?由以下公式给出:

    1. basicLen = n / k

    2. rem = n % k

    3. 对于第 i 组,其长度就是 len = basicLen + (i < rem? 1: 0)

    最后讨论循环边界条件

    1. 开始,curr = root

    2. 分为 k 组,因为 i = 0 to k - 1

    3. 计算出 len 之后,因为我们现在指向第一个元素,现在要把指针挪到最后一个元素,因此需要进行的是 len - 1 次取 next,即 j = 0 to len - 1

    4. 我们拿一个 temp = curr,然后 curr = curr.next

    5. temp.next = null

    6. 如果有某些部分的长度为 0,那么 curr 将会变成 null,此时以上逻辑就不管用了。要么另外设置逻辑,将数组后续元素置 null,要么根据语言特性跳出循环,利用默认的 null 值直接返回。

  • 相关阅读:
    Beta 冲刺(7/7)
    Beta 冲刺(6/7)
    Beta 冲刺(5/7)
    Beta 冲刺(4/7)
    Beta 冲刺(3/7)
    Beta 冲刺(2/7)
    Beta 冲刺(1/7)
    福大软工 · 第十次作业
    Adobe acrobat DC 2020 激活方法
    物理八年级下册2
  • 原文地址:https://www.cnblogs.com/KakagouLT/p/15318614.html
Copyright © 2020-2023  润新知