题目
给出 n 个数字,求出在给出的这 n 个数字当中,
最大的数字与次大的数字之差,
最大的数字与次小的数字之差,
次大的数字与次小的数字之差,
次大的数字与最小的数字之差。
对于所有数据,保证每个数字小于等于 100 且不同数字的个数大于 4。
解题思路
数组去重 + 排序
数据结构 set 可以同时满足上面的 2 个要求。
C++代码
#include<iostream> #include<vector> #include<set> using namespace std; int main(){ int n; cin >> n; set<int> st; int a; for(int i=0; i<n; ++i){ cin >> a; st.insert(a); } vector<int> ans(st.begin(), st.end()); int k = ans.size(); cout << ans[k-1] - ans[k-2] << " "; cout << ans[k-1] - ans[1] << " "; cout << ans[k-2] - ans[1] << " "; cout << ans[k-2] - ans[0] << endl; return 0; }