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;
}

原文地址:https://www.cnblogs.com/INnoVationv2/p/10266125.html

时间: 2024-10-09 00:58:22

725 分隔链表的相关文章

【Leetcode】分隔链表

题目链接:分隔链表 题意:给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前. 你应当保留两个分区中每个节点的初始相对位置. 题解:QAQ刚开始看题目看错了.以为是那种排序.要按大小的.写了一堆错的.然后重新看题,发现简单了不少啊. 用两个链表分别放比x小的和比x大的,最后组合在一起就行了..只要求保留相对位置 代码: 1 /** 2 * Definition for singly-linked list. 3 * struct ListNode

086 Partition List 分隔链表

给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前.你应当保留两个分区中每个节点的初始相对位置.例如,给定1->4->3->2->5->2 和 x = 3, 返回1->2->2->4->3->5. 详见:https://leetcode.com/problems/partition-list/description/ /** * Definition for singly-linked list.

分隔链表

给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前. 你应当保留两个分区中每个节点的初始相对位置. 示例: 输入: head = 1->4->3->2->5->2, x = 3 输出: 1->2->2->4->3->5 解决思路: 从左向右遍历链表,将节点值小于x的节点交换至链表的前端,使用tag指向前端最后一个节点. 代码如下: public static ListNode partition(

[Swift]LeetCode725. 分隔链表 | Split Linked List in Parts

Given a (singly) linked list with head node root, write a function to split the linked list into k consecutive linked list "parts". The length of each part should be as equal as possible: no two parts should have a size differing by more than 1.

leetcode 86. 分隔链表(Partition List)

目录 题目描述: 示例: 解法: 题目描述: 给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前. 你应当保留两个分区中每个节点的初始相对位置. 示例: 输入: head = 1->4->3->2->5->2, x = 3 输出: 1->2->2->4->3->5 解法: /** * Definition for singly-linked list. * struct ListNode { *

[LeetCode] 86. 分隔链表

题目链接 : https://leetcode-cn.com/problems/partition-list/ 题目描述: 给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前. 你应当保留两个分区中每个节点的初始相对位置. 示例: 输入: head = 1->4->3->2->5->2, x = 3 输出: 1->2->2->4->3->5 思路: 用两个链表,一个链表放小于x的节点,一个链表放大

LeetCode - 86、分隔链表

给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前. 你应当保留两个分区中每个节点的初始相对位置. 示例: 输入: head = 1->4->3->2->5->2, x = 3    输出: 1->2->2->4->3->5 1 /** 2 * 列表定义 3 * public class ListNode { 4 * int val; 5 * ListNode next; 6 * ListNode

力扣86——分隔链表

原题 给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前. 你应当保留两个分区中每个节点的初始相对位置. 示例: 输入: head = 1->4->3->2->5->2, x = 3 输出: 1->2->2->4->3->5 原题url:https://leetcode-cn.com/problems/partition-list/ 解题 题目很好理解,重点在于区分大于等于和小于目标值的节点,判断

【LeetCode-链表】分隔链表

题目描述 给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前. 你应当保留两个分区中每个节点的初始相对位置. 示例: 输入: head = 1->4->3->2->5->2, x = 3 输出: 1->2->2->4->3->5 题目链接: https://leetcode-cn.com/problems/partition-list/ 思路 x会将链表分割成两部分,左链表中的节点值全都小于x,右