725 分隔链表
Posted innovationv2
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了725 分隔链表相关的知识,希望对你有一定的参考价值。
vector<ListNode *> splitListToParts(ListNode *root, int k) {
vector<ListNode *> vec;
if (root == nullptr) {
for (; k > 0; --k)
vec.push_back({});
return vec;
}
int len = 0;
ListNode *it = root;
for (; it != nullptr; it = it->next, ++len);
int nums = len / k;
len -= (nums * k);
if (nums == 0) {
for (; k > 0; --k)
if (root) {
vec.push_back(root);
ListNode *temp = root->next;
root->next = nullptr;
root = temp;
} else
vec.push_back({});
return vec;
}
for (; k > 0; --k) {
ListNode *temp_it = root;
for (int temp = nums - 1; temp > 0; --temp)
temp_it = temp_it->next;
if (len > 0) {
temp_it = temp_it->next;
--len;
}
ListNode *temp_root = temp_it->next;
temp_it->next = nullptr;
vec.push_back(root);
root = temp_root;
}
return vec;
}
以上是关于725 分隔链表的主要内容,如果未能解决你的问题,请参考以下文章
[M链表] lc725. 分隔链表(模拟+代码优化+代码实现)