题目:
分析:
虽然是一道水题。但是还是有技巧的,从四个方向进行搜索即可。
代码:
class Solution {
public:
void f(vector<vector<int>>& A,int x,int y,int len1,int len2)
{
if(x<0||x>len1) return ;
if(y<0||y>len2) return ;
if(A[x][y]==0) return ;
A[x][y]=0;
int a[]={1,-1,0,0};
int b[]={0,0,1,-1};
for(int i=0;i<4;i++)
{
f(A,x+a[i],y+b[i],len1,len2);
}
}
int numEnclaves(vector<vector<int>>& A) {
if(A.size()==0) return 0;
int len1=A.size()-1;
int len2=A[0].size()-1;
for(int i=0;i<A.size();i++) f(A,i,0,len1,len2);
for(int i=0;i<A.size();i++) f(A,i,A[0].size()-1,len1,len2);
for(int i=0;i<A[0].size();i++) f(A,0,i,len1,len2);
for(int i=0;i<A[0].size();i++) f(A,A.size()-1,i,len1,len2);
int ans=0;
for(int i=0;i<A.size();i++)
for(int j=0;j<A[0].size();j++)
if(A[i][j]) ans++;
return ans;
}
};