该代码实现了一个检测链表环入口节点的算法。使用哈希表记录已访问的节点,遍历链表时检查当前节点是否已被记录。若遇到已记录的节点,则返回该节点(环的入口);若遍历结束未发现重复节点则返回NULL。时间复杂度O(n),空间复杂度O(n)。核心思路是通过哈希表实现节点访问状态的追踪。

class Solution {
public:
    ListNode *detectCycle(ListNode *head) {
        if(head == NULL) return NULL;
        map<ListNode *,int> pp;
        pp.insert(pair<ListNode *,int>(head,1));
        ListNode * cur = head->next;
        while(cur != NULL)
        {
            if(pp.find(cur) == pp.end())
            {
                pp.insert(pair<ListNode *,int>(cur,1));
                cur = cur->next;
            }
            else
                return cur;
        }
        return NULL;
    }
};
Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐