leetcodeSolution to some Leetcode problems written in C++ |
git clone git://git.dimitrijedobrota.com/leetcode.git |
Log | Files | Refs | README | LICENSE |
2100.cpp (1090B)
0 class Solution {
1 public:
2 vector<int> goodDaysToRobBank(const vector<int> &security, int time) const {
3 static int up[100001], down[100001];
4 const int n = size(security);
6 if (time == 0) {
7 vector<int> res(n);
8 iota(begin(res), end(res), 0);
9 return res;
10 }
12 up[0] = down[n - 1] = 0;
13 for (int i = 0, cnt = 1; i < n - 1; i++) {
14 if (security[i] >= security[i + 1])
15 cnt++;
16 else
17 cnt = 0;
18 up[i + 1] = cnt;
19 }
21 for (int i = n - 1, cnt = 0; i >= 1; i--) {
22 if (security[i] >= security[i - 1])
23 cnt++;
24 else
25 cnt = 0;
26 down[i - 1] = cnt;
27 }
29 vector<int> res;
30 for (int i = time; i < n - time; i++) {
31 if (up[i] < time || down[i] < time) continue;
32 if (security[i] > security[i - 1]) continue;
33 if (security[i] > security[i + 1]) continue;
35 res.emplace_back(i);
36 }
38 return res;
39 }
40 };