数组中,假定i
该回答引用ChatGPT
以下是C++实现,通过一次遍历数组来寻找大小对,时间复杂度为O(n):
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> a(n);
for (int i = 0; i < n; i++) {
cin >> a[i];
}
int ans = 0, max_num = a[n-1];
for (int i = n-2; i >= 0; i--) {
if (a[i] < max_num) {
ans += a[i];
} else {
max_num = a[i];
}
}
cout << ans << endl;
return 0;
}
这里使用一个变量max_num来记录数组右侧的最大值,如果当前的数小于max_num,则说明它和右侧的最大值构成了一个大小对,将它加入答案中。否则,更新max_num为当前的数。最后返回答案即可。