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

C语言数组按频率排序代码提交GeeksforGeeks测试用例失败排查

代码存在的问题
  • 核心错误:循环控制变量未重置
    变量a定义在main函数最外层,仅初始化了一次为0。每次处理新的测试用例时,a没有被重置为0,会导致从第二个测试用例开始,while(a < n)循环直接不执行,输出的是未排序的原数组,这是多测试用例报错的最主要原因。
  • 输出格式不符合OJ要求
    输出数组元素时,每个元素后面都跟了一个空格,大部分OJ对输出格式校验严格,行尾多余的空格会被判为格式错误。
  • 时间复杂度过高,大概率超时
    你的算法时间复杂度达到了O(n³):两层嵌套循环统计频率,两层嵌套循环移动元素。当测试用例的数组长度较大时,会直接超出时间限制无法通过。
  • 潜在的逻辑隐患
    如果题目允许元素为负整数,虽然当前初始值逻辑不会触发错误,但element初始值设为0的写法不严谨,建议第一次赋值前用INT_MIN这类边界值初始化,避免极端场景下的判断错误。
快速修复建议
  1. 把int a = 0;的定义移动到while(t--)循环内部,每次测试用例都重新初始化a为0。
  2. 调整输出逻辑:第一个元素直接输出,后续元素先输出空格再输出值,避免行尾出现多余空格。
  3. 长期优化可以调整算法逻辑:用哈希表统计每个元素的频率,再自定义排序规则排序,时间复杂度可以降到O(nlogn),满足大数组的性能要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 04:09:00