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

C语言lowestPrice函数去重后未更新数组长度导致测试失败怎么修复

lowestPrice函数bug修复方案

核心问题

代码失败的根因是:

  • 去重逻辑执行完成后,没有统计去重后的数组实际长度,判断order合法性时仍然使用了原数组的长度size
  • 测试用例4里去重后的数组长度仅为5,order=7大于实际长度,本该返回-1,但原逻辑用原数组长度10判断,7<10就进入取值逻辑,返回了错误结果

修复后的完整lowestPrice函数代码

int lowestPrice(int array[], int size, int order){
    int tempArray[size];
    for (size_t i = 0; i < size; i++)
        tempArray[i] = array[i];

    // 冒泡排序逻辑
    for (size_t i = 0; i < size; i++) {
        for (size_t j = i + 1; j < size; j++) {
            if (tempArray[j] < tempArray[i]) {
                int tmp = tempArray[i];
                tempArray[i] = tempArray[j];
                tempArray[j] = tmp;
            }
        }
    }
            
    int j = 0;
    // 数组去重逻辑
    for (size_t i = 0; i < size - 1; i++){
        if(tempArray[i] != tempArray[i+1])
        {
            tempArray[j] = tempArray[i];                
            j++;    
        } 
        tempArray[j] = tempArray[i+1];
    }  

    // 新增:计算去重后的数组实际长度
    int unique_size = j + 1;

    // 修改:用去重后的长度判断order合法性
    if(order > unique_size || order < 0){
        return -1;
    } else {
        order--;
        return tempArray[order];        
    }
}

修改点说明

  1. 去重逻辑结束后新增了unique_size变量统计去重后的实际数组长度,j是去重后数组最后一个元素的下标,所以长度为j+1
  2. 将原来order合法性判断条件里的size替换为unique_size,完全匹配需求要求的判断逻辑
  3. 原有排序、去重逻辑不需要改动,修复后所有测试用例均可正常通过

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 10:54:04