-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathduplicate-zeros.cpp
More file actions
33 lines (32 loc) · 858 Bytes
/
duplicate-zeros.cpp
File metadata and controls
33 lines (32 loc) · 858 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
class Solution {
public:
// space O(1)的方法:https://leetcode.com/problems/duplicate-zeros/discuss/312743/JavaC++-O(n)-or-O(1)
void duplicateZeros(vector<int>& arr) {
if(arr.empty()) return;
vector<int> tmp(arr);
int i=0;
int j=0;
while(j<arr.size()){
if(tmp[i]==0){
arr[j++]=0;
if(j<arr.size()) arr[j]=0;
}
else{
arr[j]=tmp[i];
}
i++;
j++;
}
}
// 更简便
void duplicateZeros1(vector<int>& arr) {
vector<int> x;
for(int i = 0 ; i < arr.size() ; i++){
x.push_back(arr[i]);
if( arr[i] == 0 ) x.push_back(arr[i]);
}
for(int i = 0 ; i < arr.size() ; i++)
arr[i] = x[i];
return;
}
};