✍️
【C言語】Leet Code Probrems「1491. Average Salary Excluding the Minimum」解答例
はじめに
本記事ではLeetCodeのProblemの解答例を示す
問題
You are given an array of unique integers salary where salary[i] is the salary of the ith employee.
Return the average salary of employees excluding the minimum and maximum salary. Answers within 10-5 of the actual answer will be accepted.
解答例
double average(int* salary, int salarySize){
double sum=0;
int min=salary[0];
int max=salary[0];
for(int i=0;i<salarySize;i++){
if(min>salary[i]){
min=salary[i];
}
if(max<salary[i]){
max=salary[i];
}
}
for(int i=0;i<salarySize;i++){
if((salary[i]!=min)&&(salary[i]!=max)){
sum+=salary[i];
}
}
return sum/(salarySize-2);
}
時間が掛かった箇所
if((salary[i]!=min)&&(salary[i]!=max)){
演算子はAND(&&)が正しいが、誤ってOR(||)にしていたため、min、maxも加算されて誤った計算結果になっていた
まとめ
・AND、ORを使用する場合はバグが生まれやすいので気をつける
Discussion