题解
不与最大数相同的数字之和
1 条题解
-
0
解题思路
先扫一遍找出最大值,再扫第二遍把所有不等于最大值的数加起来。注意最大值出现多次时,那些数也都不加。
参考代码
#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