自闭中——悲伤往事12.20
题1. 给定一个数组,返回最大的三个数索引和最小的三个数索引(如果数值相同,记录索引较小的),按照索引从小到大顺序来返回。
示例1:
输入:
1 50 40 68 72 86 35 34 87 99 63 75
输出:
5 8 9
0 6 7
#include<algorithm> #include<vector> #include<iostream> using namespace std; int main() { vector<int> nums; int temp; while (cin >> temp) { nums.push_back(temp); } vector<int> max_sql; vector<int> min_sql; vector<int> stk; //处理前三个元素 for (int i = 0; i < 3; i++) { while (!max_sql.empty() && nums[i] > nums[max_sql.back()]) { stk.push_back(max_sql.back()); max_sql.pop_back(); } max_sql.push_back(i); while (!stk.empty()) { max_sql.push_back(stk.back()); stk.pop_back(); } while (!min_sql.empty() && nums[i] < nums[min_sql.back()]) { stk.push_back(min_sql.back()); min_sql.pop_back(); } min_sql.push_back(i); while (!stk.empty()) { min_sql.push_back(stk.back()); stk.pop_back(); } } //ouput: //1 2 0 //0 2 1 //处理i=3后续 int n = nums.size(); int index = false; for (int i = 3; i < n; i++) { while (!max_sql.empty() && nums[i] > nums[max_sql.back()]) { stk.push_back(max_sql.back()); max_sql.pop_back(); index = true; } if (index) { max_sql.push_back(i); index = false; } while (max_sql.size()<3) { max_sql.push_back(stk.back()); stk.pop_back(); } stk.clear(); while (!min_sql.empty() && nums[i] < nums[min_sql.back()]) { stk.push_back(min_sql.back()); min_sql.pop_back(); index = true; } if (index) { min_sql.push_back(i); index = false; } while (min_sql.size() < 3) { min_sql.push_back(stk.back()); stk.pop_back(); } stk.clear(); } //输出 sort(max_sql.begin(), max_sql.end()); for (int i = 0; i < 3; i++) { cout << max_sql[i]; if (i != 2) { cout << " "; } } cout << '\n'; sort(min_sql.begin(), min_sql.end()); for (int i = 0; i < 3; i++) { cout << min_sql[i]; if (i != 2) { cout << " "; } } return 0; }
#include<algorithm> #include<vector> #include<iostream> using namespace std; int main() { vector<int> nums; int temp; do{ cin >> temp; nums.push_back(temp); }while (cin.get() != '\n'); vector<int> A = nums; int n = A.size(); vector<int> max_sql; vector<int> min_sql; sort(A.begin(), A.end()); for (int i = 0; i < 3; i++) { int index1 = find(nums.begin(), nums.end(), A[n - 1 - i])-nums.begin(); //cout << A[n - 1 - i] <<index1<<" "; max_sql.push_back(index1); nums[index1] = INT_MIN; int index2 = find(nums.begin(), nums.end(), A[i])-nums.begin(); min_sql.push_back(index2); nums[index2] = INT_MIN; //cout << A[i]<<index2 << " "; } //输出 sort(max_sql.begin(), max_sql.end()); for (int i = 0; i < 3; i++) { cout << max_sql[i]; if (i != 2) { cout << " "; } } cout << '\n'; sort(min_sql.begin(), min_sql.end()); for (int i = 0; i < 3; i++) { cout << min_sql[i]; if (i != 2) { cout << " "; } } cout << '\n'; for (int i = 0; i < n; i++) { cout << nums[i] << ','; } return 0; }#华为##我的实习求职记录##24秋招求职节奏总结#