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

Array Lookup测试用例失败求助:HackerRank题目代码仅过2/5用例

代码错误排查求助

我在HackerRank上完成教授布置的练习题时,编写的C++代码仅通过了2/5的测试用例,耗时4小时仍未找到问题所在,麻烦帮我指出代码中的错误。

题目内容

Alice去购物买了8件商品,结账时发现钱不够。她决定将第一个出现的最高价格商品替换为与最低价格相同的商品,请输出最终的商品价格。

注意:若存在多个最高价格的商品,仅替换第一个出现的。

示例1:
输入: 250 1000 50 20 10 100 200 25
输出: 250 10 50 20 10 100 200 25

示例2:
输入: 2500 2500 50 20 10 100 200 25
输出: 10 2500 50 20 10 100 200 25

约束条件
需输入8件商品的价格

输出格式
输出替换后的最终商品价格,元素间用单个空格分隔

我的代码

#include <iostream>
#include <algorithm>
using namespace std;

int main()
{
int arr[8];
int check=0;
int max=0,min=0;

    for(int i=0;i<8;i++)
    {
        cin>>arr[i];
        if(i==0)
        {
            max =arr[0];
            min =arr[0];
        }
        else
            if(arr[i]>max)
            max = arr[i];

            if(arr[i]<min)
            min = arr[i];
    }

    for(int i=0;i<8;i++)
    {
        if(arr[i]==max && check==0)
        {
            arr[i]=min;
            check++;
        }
        cout<<arr[i]<<"  ";
     }

}

代码错误分析

  1. 输出格式不符合要求
    题目要求输出元素间用单个空格分隔,但你的代码中输出语句是cout<<arr[i]<<" ";,每个元素后添加了两个空格,这会导致测试用例因格式不匹配而失败。

  2. 代码块逻辑的潜在风险
    在读取数据的循环中,else仅关联了紧跟的if(arr[i]>max)语句,后续的if(arr[i]<min)是独立执行的。虽然当前逻辑下这不会影响结果,但未用大括号{}包裹else后的代码块,容易引发后续逻辑错误,建议养成用大括号明确代码块范围的习惯。

  3. 冗余头文件
    代码中引入了<algorithm>头文件,但未使用其中的任何函数,属于冗余代码,可删除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 17:27:13