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

求解LeetCode Top K Frequent Elements代码运行时错误问题

问题排查与修复

运行时错误原因

你的代码中最后一个for循环缺少了i的递减操作,导致循环陷入死循环,不断向sol中重复添加元素,最终触发内存超限类的运行时错误。

原错误循环代码片段:

for(int i = v.size()-1 ; i>=k-1 ; i++)
{
    sol.push_back(v[i].second);
}

修复后的完整代码

class Solution {
public:
    vector<int> topKFrequent(vector<int>& nums, int k) {
        unordered_map<int,int> m;
        // 简化频率统计逻辑
        for(int num : nums) {
            m[num]++;
        }
        vector<pair<int,int>> v;
        for(auto& x : m) {
            v.emplace_back(x.second, x.first);
        }
        vector<int> sol;
        sort(v.begin(), v.end());
        // 修复循环逻辑,添加i--并优化终止条件
        for(int i = v.size()-1 ; i >= v.size() - k ; i--) {
            sol.push_back(v[i].second);
        }
        return sol;
    }
};

额外优化说明

  • 简化频率统计:直接用m[num]++替代原有的find+insert逻辑,unordered_map会自动为不存在的key初始化值为0,代码更简洁高效。
  • 优化循环条件:将终止条件改为i >= v.size() - k,逻辑更直观——从排序后的数组末尾取前k个元素,避免计算k-1可能带来的边界混淆。
  • 高效构造元素:用emplace_back替代push_back,直接在容器内构造pair对象,比拷贝对象更高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 11:50:21