zoukankan      html  css  js  c++  java
  • 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 值直接返回。

  • 相关阅读:
    Python-02 可视化之tkinter介绍
    Python-01矩阵、数组和列表等的总结
    嵌入式文件IO实验
    Linux 学习
    linux 学习
    Linux学习
    Linux学习
    Linux 学习
    Linux 学习
    Linux 用户权限学习
  • 原文地址:https://www.cnblogs.com/KakagouLT/p/15318614.html
Copyright © 2011-2022 走看看