网易第三题最小最大子序列大家怎么做的呀
我是这样写的,自己测试是ok的,但是通过率0%,很不解,望大佬们指正!
#include<iostream>
#include<vector>
#include<deque>
#include<algorithm>
#include <cstdio>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> nums;
for (int i = 0; i < n; i ++) {
int x; scanf("%d",&x);
nums.push_back(x);
}
for (int k = 1; k <= nums.size(); k ++) {
int min_ = 1000000000;
int max_ = 0;
deque<int> d;
for (int i = 0; i < nums.size(); i ++) {
while (d.size() && nums[d.back()] <= nums[i])
d.pop_back();
while (d.size() && i - d.front() + 1> k)
d.pop_front();
d.push_back(i);
if (i + 1 >= k) {
max_ = max(max_, nums[d.front()]);
min_ = min(min_, max_);
}
}
cout << min_;
if (k < nums.size())
cout << ' ';
}
}另外,第一题辗转相除法也求讨论,也恳请大佬不吝赐教说一下第二题按位或和第四题优秀的01序列的思路~
#网易##笔试题目##秋招#