题目链接:https://ac.nowcoder.com/acm/contest/122724/B
题目大意:给定一个数组a,并取出a中所有二元组,并用这些二元组作差的绝对值构成一个新序列b,求b中最大值
题目思路:可以知道对于b中元素覆盖a中所有二元组的绝对值,那么我们只需要求出a中的最大值和最小值,然后相减取绝对值即可
时间复杂度:O(n)
代码如下:
cpp
#include <bits/stdc++.h>
using namespace std;
#define endl "\n"
#define int long long//由于数据范围较大,需要开ll
// https://ac.nowcoder.com/acm/contest/122724/B
// 牛客周赛 119B题(贪心)
/*
题目大意:给定一个数组a,并取出a中所有二元组,并用这些二元组作差的绝对值构成一个新序列b,求b中最大值
题目思路:可以知道对于b中元素覆盖a中所有二元组的绝对值,那么我们只需要求出a中的最大值和最小值,然后相减取绝对值即可
*/
//时间复杂度:O(n)
void solve()
{
int n;
cin >> n;
vector<int> a(n);
int ma = 1, mi = 1e9;//初始化
for (int i = 0; i < n;i++){
cin >> a[i];
ma = max(ma, a[i]);//最大值
mi = min(mi, a[i]);//最小值
}
cout << abs(ma - mi) << endl;//取绝对值
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
int T;
cin >> T;
while (T--)
{
solve();
}
return 0;
}