网易第三题最小最大子序列大家怎么做的呀
我是这样写的,自己测试是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序列的思路~
#网易##笔试题目##秋招#