Skip to content

Commit ce81023

Browse files
authored
Create duplicate-zeros.cpp
1 parent a556523 commit ce81023

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed

C++/duplicate-zeros.cpp

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
// Time: O(n)
2+
// Space: O(1)
3+
4+
class Solution {
5+
public:
6+
void duplicateZeros(vector<int>& arr) {
7+
int shift = 0, i;
8+
for (i = 0; i + shift < arr.size(); ++i) {
9+
shift += int(arr[i] == 0);
10+
}
11+
for (i = i - 1; shift > 0; --i) {
12+
if (i + shift < arr.size()) {
13+
arr[i + shift] = arr[i];
14+
}
15+
if (arr[i] == 0) {
16+
--shift;
17+
arr[i + shift] = arr[i];
18+
}
19+
}
20+
}
21+
};

0 commit comments

Comments
 (0)