Skip to content

Commit 7d1189e

Browse files
authored
Create find-all-good-indices.cpp
1 parent 6a42cca commit 7d1189e

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

C++/find-all-good-indices.cpp

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
// Time: O(n)
2+
// Space: O(n)
3+
4+
// prefix sum
5+
class Solution {
6+
public:
7+
vector<int> goodIndices(vector<int>& nums, int k) {
8+
vector<int> left(size(nums), 1);
9+
for (int i = 1; i + 1 < size(nums); ++i) {
10+
if (nums[i] <= nums[i - 1]) {
11+
left[i] = left[i - 1] + 1;
12+
}
13+
}
14+
vector<int> right(size(nums), 1);
15+
for (int i = size(nums) - 2; i >= 1; --i) {
16+
if (nums[i] <= nums[i + 1]) {
17+
right[i] = right[i + 1] + 1;
18+
}
19+
}
20+
vector<int> result;
21+
for (int i = k; i + k < size(nums); ++i) {
22+
if (min(left[i - 1], right[i + 1]) >= k) {
23+
result.emplace_back(i);
24+
}
25+
}
26+
return result;
27+
}
28+
};

0 commit comments

Comments
 (0)