题目

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 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) {// 例1: 长度为10的链表, 分成3段, [4 3 3]//      其中,10%3=1段长度为4, 3-1=2段长度为3// 例2: 长度为11的链表, 分成3段, [4 4 3]//      其中,11%3=2段长度为4, 3-1=2段长度为3// 结论: 长度为L的链表, 分成k段, [a个"L/k向下取整", b个"L/k向上取整"]//       其中, a=L%k, b=k-bListNode[] result = new ListNode[k];int L = 0;ListNode node = head;while (node != null) {L++;node = node.next;}int floor = L / k;int ceil = (int) Math.ceil((float) L / k);int a = L % k;int b = k - a;// splitint i = 0;ListNode pre = null;ListNode newHead = head;node = head;for (int j = 0; j < a; j++) {for (int l = 0; l < ceil; l++) {pre = node;node = node.next;}if (pre != null) pre.next = null;else newHead = null;result[i++] = newHead;newHead = node;}for (int j = 0; j < b; j++) {for (int l = 0; l < floor; l++) {pre = node;node = node.next;}if (pre != null) pre.next = null;result[i++] = newHead;newHead = node;}return result;}
}

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

  1. 《LeetCode力扣练习》第206题 反转链表 Java

    <LeetCode力扣练习>第206题 反转链表 Java 一.资源 题目: 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表. 示例 1: 输入:head = [1,2, ...

  2. 《LeetCode力扣练习》第160题 相交链表 Java

    <LeetCode力扣练习>第160题 相交链表 Java 一.资源 题目: 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点.如果两个链表不存 ...

  3. 《LeetCode力扣练习》第141题 环形链表 Java

    <LeetCode力扣练习>第141题 环形链表 Java 一.资源 题目: 给你一个链表的头节点 head ,判断链表中是否有环. 如果链表中有某个节点,可以通过连续跟踪 next 指针 ...

  4. LeetCode 92. Reverse Linked List II--Python 解法--反转部分链表--笔试算法题

    题目地址:Reverse Linked List II - LeetCode Reverse a linked list from position m to n. Do it in one-pass ...

  5. LeetCode -剑指Offer 06 - 从尾到头打印链表 - java - 细喔

    文章目录 题目 题目解析 解题思维 代码如下 代码细节 - 逆序 附加内容 题目   题目解析 题目目的很直接!就是想让你从链表尾结点开始到头节点结束,将每个节点的val 装入一个数组里,并将其返回. ...

  6. 【回文串7】LeetCode 234. Palindrome Linked List

    LeetCode 234. Palindrome Linked List Solution1:我的答案 一遍过,哈哈哈! /*** Definition for singly-linked list. ...

  7. 【??链表】LeetCode 92. Reverse Linked List II

    LeetCode 92. Reverse Linked List II Solution1: 参考网址:http://www.cnblogs.com/grandyang/p/4306611.html ...

  8. 《LeetCode力扣练习》剑指 Offer 25. 合并两个排序的链表 Java

    <LeetCode力扣练习>剑指 Offer 25. 合并两个排序的链表 Java 一.资源 题目: 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的. 示例1: ...

  9. 《LeetCode力扣练习》剑指 Offer 24. 反转链表 Java

    <LeetCode力扣练习>剑指 Offer 24. 反转链表 Java 一.资源 题目: 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点. 示例: 输入: 1-& ...

最新文章

  1. arthas-Java诊断工具
  2. SQL2005以上版本派生表更新
  3. uva 11020 - Efficient Solutions
  4. 深度学习入门笔记系列(一)——深度学习框架 tensorflow 的介绍与安装
  5. Linux安装或升级openssh步骤和可能遇到的问题
  6. 【2018ACM山东省赛 - C】Cities(最小生成树变形优化,贪心思维)
  7. Oracle12081,【Oracle介质】Oracle 12C Linux x86-64 最新OPatch patch 6880880 12.2.0.1.7
  8. Spring+Spring Boot+Mybatis框架注解解析
  9. 中文版Postman测试需要登陆才能访问的接口(基于Cookie)
  10. 【C++】gflags的使用
  11. 2020长安杯网站重构部分
  12. theano学习--theano.function
  13. 樊登读书赋能读后感_《赋能》读后感心得体会
  14. neural networks logistic regression 神经网络逻辑回归
  15. 从修复 testerhome(rubychina)网站的一个 bug 学习 rubyrails on ruby
  16. 周迅是永远的精灵,不接受反驳
  17. 英语快照1---英语正能量
  18. 蓝牙BQB认证所需资料和流程
  19. 【Python编程】三步完成如何从视频中提取音频?
  20. 【Scala】Scala的偏函数和偏应用函数

热门文章

  1. python 逻辑回归权重_Python 逻辑回归
  2. 第一类Stirling数和第二类Stirling
  3. codeforces contest 1142
  4. 19.IDA-栈指针调节、设置函数特性
  5. 【玩转cocos2d-x之三十一】弱联网与服务器的通讯
  6. OpenCV 中的图像处理 004_平滑图像
  7. 关于JUnit5 你必须知道的(一) JUnit5架构和环境搭建
  8. 设计模式:访问者模式(Vistor)
  9. 史上最详细的MySQL操作事例
  10. 音视频、AI和5G等技术在东京奥运会中的应用