题目描述
blablabla
样例
blablabla
算法1
(暴力枚举) O(n)
blablabla
时间复杂度
参考文献
C++ 代码
#include <bits/stdc++.h>
using namespace std;
const int N = 2e5+10;
int a[N],b[N],mark[N];//mark[i]表示第i个0的位置
int n;
int main(){
cin >> n;
int idx = 1;
for(int i = 1;i<=n;i++){
scanf("%d",&a[i]);
b[i] = a[i];
if(a[i] == 0){
mark[idx++] = i;
}
}
int k = idx-1;
mark[0] = 0;
idx = 1;
for(int i = 1;i<=n;i++){
if(b[i]){
if(mark[1] > i) b[i] = mark[1] - i;
if(mark[idx] < i) idx++;
if(idx>1) b[i] = min(abs(mark[idx] - i),abs(i-mark[idx - 1]));
if(mark[k] < i) b[i] = i - mark[k];
}
}
for(int i = 1;i<=n;i++) printf("%d ",b[i]);
return 0;
}
算法2
(暴力枚举) O(n2)
blablabla
时间复杂度
参考文献
C++ 代码
blablabla