自闭中——悲伤往事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秋招求职节奏总结#
全部评论

相关推荐

写不来代码的小黑:这么小的城市能有做it的公司也不容易
点赞 评论 收藏
分享
07-24 03:49
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务