You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LeetCode 133图深拷贝代码本地正常但提交报错求助

排查LeetCode 133题Clone Graph提交错误:"You must return a copy of all the nodes in the original graph"

以下是几种常见错误原因及解决思路:

  • 遗漏原图部分节点的克隆
    若使用DFS/BFS遍历,可能存在遍历逻辑缺陷:比如终止条件错误导致未覆盖所有连通节点,或是处理邻居时跳过了部分节点。要确保遍历能触达原图的每一个节点,且每个原节点都对应创建克隆节点。

  • 克隆节点的邻居指向原节点
    本地只验证了克隆节点地址不同,但可能部分邻居仍指向原节点而非对应的克隆节点。必须用哈希表(如unordered_map<Node*, Node*>)记录原节点到克隆节点的映射,处理邻居时从哈希表中取出对应克隆节点加入列表,而非直接复制原节点的邻居指针。

  • 哈希表使用逻辑错误
    正确的流程是:遇到节点先检查哈希表,若已存在克隆节点则直接返回;若不存在则先创建克隆节点存入哈希表,再递归处理邻居。如果颠倒顺序(先处理邻居再存哈希表),会导致重复创建节点或遗漏映射,最终出现未完全克隆的情况。

  • 边界情况未处理
    比如原节点为nullptr时需直接返回nullptr;单个无邻居的节点,克隆后要确保其邻居列表为空,而非复用原节点的邻居列表。

正确实现示例(C++)

class Solution {
private:
    unordered_map<Node*, Node*> nodeMap;
public:
    Node* cloneGraph(Node* node) {
        if (!node) return nullptr;
        if (nodeMap.count(node)) {
            return nodeMap[node];
        }
        Node* clone = new Node(node->val);
        nodeMap[node] = clone;
        for (Node* n : node->neighbors) {
            clone->neighbors.push_back(cloneGraph(n));
        }
        return clone;
    }
};

内容的提问来源于stack exchange,提问作者Priyanshu Sahani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 17:15:12