吐血题,官方编译会有问题。
q[h] < i-size+1 会乱数据
要提前 int len = i-size +1. 靠北
class Solution { public: vector<int> maxInWindows(const vector<int>& num, unsigned int size) { vector<int> ans; if(size==0||size>num.size()) return ans; int q[100000]; int h=0,t=-1; for(int i=0;i<num.size();i++){ int x=num[i]; int len=i-size+1; while(h<=t&&q[h]<len) h++; while(h<=t&&num[q[t]]<x) t--;//维护降序 q[++t]=i; if(i>=size-1) ans.push_back(num[q[h]]); } return ans; } };