zoukankan      html  css  js  c++  java
  • 725. 分隔链表

    给定一个头结点为 root 的链表, 编写一个函数以将链表分隔为 k 个连续的部分。

    每部分的长度应该尽可能的相等: 任意两部分的长度差距不能超过 1,也就是说可能有些部分为 null。

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

    返回一个符合上述规则的链表的列表。

    举例: 1->2->3->4, k = 5 // 5 结果 [ [1], [2], [3], [4], null ],隔离部分无联系

     1 public class SplitLinkedListinParts {
     2     static class ListNode {
     3         int val;
     4         ListNode next;
     5         ListNode(int x) {
     6             val = x;
     7         }
     8     }
     9     public ListNode[] splitListToParts(ListNode root, int k) {
    10         ListNode cur = root;
    11         ListNode[] result = new ListNode[k];
    12         int len = 0;
    13         while(cur != null) {
    14             len++;  //获取长度
    15             cur = cur.next;
    16         }
    17         int size = len / k;  
    18         int mod = len % k;   
    19         cur = root;
    20         for(int i = 0; i < k && cur != null; i++) {
    21             int cursize = size + (mod-- > 0 ? 1 : 0);  //保证前面长的部分只多一个
    22             result[i] = cur;  
    23             for(int j = 1; j < cursize; j++) {   //分割
    24                 cur = cur.next;
    25             }
    26             ListNode next = cur.next;  //隔离部分最后一个结点和下一部分的第一个结点断绝联系
    27             cur.next = null;
    28             cur = next;
    29         }
    30         return result;
    31     }
    32 }
    无论有多困难,都坚强的抬头挺胸,人生是一场醒悟,不要昨天,不要明天,只要今天。不一样的你我,不一样的心态,不一样的人生,顺其自然吧
  • 相关阅读:
    【PowerOJ1736&网络流24题】飞行员配对方案问题(最小割)
    MySQL的锁机制
    Hadoop相关基础知识
    ICMP基础知识
    关于CPU的一些基础知识
    关于内存的一些基础知识
    MySQL查询优化
    MapReduce初探
    压缩解压缩相关基础知识
    后台服务相关基础知识
  • 原文地址:https://www.cnblogs.com/xiyangchen/p/11061138.html
Copyright © 2011-2022 走看看