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]<<" "; } }
代码错误分析
输出格式不符合要求
题目要求输出元素间用单个空格分隔,但你的代码中输出语句是cout<<arr[i]<<" ";,每个元素后添加了两个空格,这会导致测试用例因格式不匹配而失败。代码块逻辑的潜在风险
在读取数据的循环中,else仅关联了紧跟的if(arr[i]>max)语句,后续的if(arr[i]<min)是独立执行的。虽然当前逻辑下这不会影响结果,但未用大括号{}包裹else后的代码块,容易引发后续逻辑错误,建议养成用大括号明确代码块范围的习惯。冗余头文件
代码中引入了<algorithm>头文件,但未使用其中的任何函数,属于冗余代码,可删除。
内容的提问来源于stack exchange,提问作者Aurorachilles
相关产品推荐
相关产品推荐

