Split Linked List in Parts(LeetCode725)
来源:互联网 发布:曼隆学院 知乎 编辑:程序博客网 时间:2024/06/05 14:14
参加LeetCode weekly contest 58时的一道价值5分的题,是关于数据结构的
要求将一个链表均分为k份,如果不能均分(例如链表有6个节点而k=5),则各个部分差不能大于1,链表中允许为空
解题思路:
我是先求出链表的长度记为llen,然后llen / k得到每一部分赢至少有几个节点,记为n;然后用llen mod k求出有几个链表需要多加1个节点记为c;剩下的操作就是添加节点了,定义一个指针p用来指向要被添加的元素,一直移动就好了
AC代码
#encoding:utf-8# Definition for singly-linked list.# class ListNode(object):# def __init__(self, x):# self.val = x# self.next = Noneclass Solution(object): def splitListToParts(self, root, k): """ :type root: ListNode :type k: int :rtype: List[ListNode] """ llen = 0; myList = [] #计算root的长度 p = root while p is not None: llen = llen+1 p = p.next #计算最少的部分有几个元素 #计算有几部分多出一个元素 n = llen / k; c = llen % k; p = root #指向要被选择的元素 #加入列表 for i in range(0,k): head = ListNode(1) #每一部分的头 if n == 0 and i >= c: myList.append(None) else: q = head if i < c: for j in range(0,n+1): q.next = p p = p.next q = q.next q.next = None else: for j in range(0,n): q.next = p p = p.next q = q.next q.next = None head = head.next myList.append(head) return myList
阅读全文
1 0
- Split Linked List in Parts(LeetCode725)
- Split Linked List in Parts
- 725. Split Linked List in Parts
- LeetCode 725 (Split Linked List in Parts)
- LeetCode-Split Linked List in Parts
- 725. Split Linked List in Parts。
- 725. Split Linked List in Parts
- leetcode 725. Split Linked List in Parts
- 725. Split Linked List in Parts
- LWC 58:725. Split Linked List in Parts
- Split Linked List in Parts问题及解法
- Split Linked List in Parts:切分链表
- P16 (**)-P17 (*) Drop every Nth element from a list;Split a list into two parts.
- LeetCode 237 Delete Node in a Linked List(在链表中删除节点)(Linked List)
- P17 (*) Split a list into two parts; the length of the first part is given.
- LeetCode(237)Delete Node in a Linked List
- 【LeetCode】237. Delete Node in a Linked List(链表)
- leetcode系列(75)Delete Node in a Linked List
- 设置centos7的网络连接
- 1039. 到底买不买(20)
- 窗口
- this
- 【KM算法 模板】HDU
- Split Linked List in Parts(LeetCode725)
- 编程求出1+2+3...+n的值
- contine语句
- C++多线程中调用python api函数 GIL的使用
- 多线程下载
- 多项式求和
- 1040. 有几个PAT(25)
- 国王将金币作为工资,发放给忠诚的骑士。
- C关于最小公倍数最大公约数关于小程序错误求教