LeetCode题解——Copy List with Random Pointer

本文介绍了一种优化解决方案,用于复制包含随机指针的链表,通过在原始链表中关联副本节点,减少空间复杂度。算法分为三个迭代步骤:复制每个节点、设置随机指针、还原原始链表。

A linked list is given such that each node contains an additional random pointer which could point to any node in the list or null.

Return a deep copy of the list.

Subscribe to see which companies asked this question

As an optimised solution, we could reduce the space complexity into constant. The idea is to associate the original node with its copy node in a single linked list. In this way, we don't need extra space to keep track of the new nodes.

The algorithm is composed of the follow three steps which are also 3 iteration rounds.

  1. Iterate the original list and duplicate each node. The duplicate of each node follows its original immediately.
  2. Iterate the new list and assign the random pointer for each duplicated node.
  3. Restore the original list and extract the duplicated nodes.
/**
 * Definition for singly-linked list with a random pointer.
 * struct RandomListNode {
 *     int label;
 *     RandomListNode *next, *random;
 *     RandomListNode(int x) : label(x), next(NULL), random(NULL) {}
 * };
 */
class Solution {
public:
  RandomListNode *copyRandomList(RandomListNode *head) {
    RandomListNode *newHead, *l1, *l2;
    if (!head) return NULL;
    for (l1 = head; l1 != NULL; l1 = l1->next->next) {
        l2 = new RandomListNode(l1->label);
        l2->next = l1->next;
        l1->next = l2;
    }

    newHead = head->next;
    for (l1 = head; l1 != NULL; l1 = l1->next->next) {
        if (l1->random != NULL) l1->next->random = l1->random->next;
    }

    for (l1 = head; l1 != NULL; l1 = l1->next) {
        l2 = l1->next;
        l1->next = l2->next;
        if (l2->next != NULL) l2->next = l2->next->next;
    }

    return newHead;
}
};



【Copula光伏功率预测】基于单调广义学习系统(MBLS)和Copula理论的时空概率预测模型(Matlab代码实现)内容概要:本文介绍了一个基于单调广义学习系统(MBLS)和Copula理论的时空概率预测模型,用于光伏功率预测,并提供了相应的Matlab代码实现。该模型结合了MBLS在非线性映射和快速学习方面的优势,以及Copula函数在刻画多变量随机变量之间复杂相关性结构的能力,能够有效处理光伏发电的不确定性与时空相关性,从而提高预测精度和可靠性。此外,文中还列举了多个相关领域的研究案例和技术应用,展示了其在电力系统、机器学习、路径规划等多个方向的广泛应用前景。; 适合人群:具备一定编程基础和电力系统背景知识,熟悉Matlab编程语言,从事新能源发电预测、电力系统优化等相关领域研究的研发人员和高校师生。; 使用场景及目标:①应用于光伏电站的实际功率预测中,提升电网调度的准确性和稳定性;②作为学术研究工具,探索新型预测算法在处理非线性和不确定性问题上的潜力;③为其他可再生能源如风力发电的概率预测提供借鉴和参考。; 阅读建议:建议读者结合实际数据进行实验验证,深入理解MBLS和Copula理论的核心思想及其实现细节,同时关注模型参数的选择对预测性能的影响,以期达到最佳的应用效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值