f072 - 3. 家裡的後花園 (Garden)
題目描述
題目給定一個整數陣列,代表一塊花園,其中 1 代表有花,0 代表沒有花,9 代表籬笆。要求計算花園中沒有花且左右都不是籬笆的格子數量。
解題思路
這題的解題思路是先找到花園中最左邊和最右邊的花的位置。然後遍歷這段花園,對於每個格子,如果它是沒有花的格子(值為 0),並且它的左右鄰居都不是籬笆(值不為 9),那麼就將計數器加一。
複雜度分析
- 時間複雜度: O(n)
- 空間複雜度: O(1)
程式碼
#include <stdio.h>
int a[26];
int main(){
int n=0,ans=0,i;
scanf("%d",&n);
int l=n,r=0;
for(i=0;i<n;++i)
scanf("%d",&a[i]);
for(i=0;i<n;++i){
if(a[i]==1){
l=i;
break;
}
}
for(i=n-1;i>=0;--i){
if(a[i]==1){
r=i;
break;
}
}
for(i=l;i<=r;++i)
if(a[i]==0&&a[i+1]!=9&&a[i-1]!=9)
++ans;
printf("%d",ans);
}