top1编程
← 返回题目
题解

不与最大数相同的数字之和

1 条题解

  • 0
    @ 2026-8-5 0:36:21

    解题思路

    先扫一遍找出最大值,再扫第二遍把所有不等于最大值的数加起来。注意最大值出现多次时,那些数也都不加。

    参考代码

    #include <iostream>
    using namespace std;
    
    int main() {
        int n;
        cin >> n;
        int a[105];          // 存下所有的数
        int mx = -20000;     // 记录最大值,初始设得很小
    
        for (int i = 0; i < n; i++) {
            cin >> a[i];
            if (a[i] > mx) mx = a[i];   // 谁大谁当最大值
        }
    
        long long ans = 0;
        for (int i = 0; i < n; i++) {
            if (a[i] != mx) ans += a[i];   // 不是最大值才累加
        }
        cout << ans << endl;
        return 0;
    }
    

    复杂度分析

    扫两遍数组,时间复杂度 O(n),额外空间复杂度 O(n)。

    • 1