✍️

【C言語】Leet Code Probrems「1491. Average Salary Excluding the Minimum」解答例

2023/01/09に公開

はじめに
本記事では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.

https://leetcode.com/problems/average-salary-excluding-the-minimum-and-maximum-salary/

解答例

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