面試題 16.19. 水域大小
難度中等25收藏分享切換為英文關注反饋
你有乙個用於表示一片土地的整數矩陣land
,該矩陣中每個點的值代表對應地點的海拔高度。若值為0則表示水域。由垂直、水平或對角連線的水域為池塘。池塘的大小是指相連線的水域的個數。編寫乙個方法來計算矩陣中所有池塘的大小,返回值需要從小到大排序。
示例:
輸入:[[0,2,1,0],
[0,1,0,1],
[1,1,0,1],
[0,1,0,1]
]輸出:[1,2,4]
解題思路:經典的dfs解法,
ac**如下:
class solution {
public:
vectorpools;
int vis[1000][1000];
int cnt=0;
void dfs(int x,int y,int row,int line){
cnt++;
vis[x][y]++;
for(int i=max(x-1,0);i<=min(row-1,x+1);i++){
for(int j=max(0,y-1);j<=min(line-1,y+1);j++){
if( vis[i][j]==0)//未被訪問過的點
dfs(i,j,row,line);
vectorpondsizes(vector>& land) {
int row=land.size();//行
int line=land[0].size();//列
for(int i=0;ifor(int j=0;jvis[i][j]=land[i][j];
for(int i=0;ifor(int j=0;jif(vis[i][j]==0 ){
dfs(i,j,row,line);
pools.push_back(cnt);
cnt=0;
sort(pools.begin(),pools.end());
return pools;
LeetCode 面試題 16 19 水域大小
面試題 16.19.水域大小 難度中等40 你有乙個用於表示一片土地的整數矩陣land,該矩陣中每個點的值代表對應地點的海拔高度。若值為0則表示水域。由垂直 水平或對角連線的水域為池塘。池塘的大小是指相連線的水域的個數。編寫乙個方法來計算矩陣中所有池塘的大小,返回值需要從小到大排序。示例 輸入 0,...
面試題 16 19 水域大小
你有乙個用於表示一片土地的整數矩陣land,該矩陣中每個點的值代表對應地點的海拔高度。若值為0則表示水域。由垂直 水平或對角連線的水域為池塘。池塘的大小是指相連線的水域的個數。編寫乙個方法來計算矩陣中所有池塘的大小,返回值需要從小到大排序。示例 0 len land 1000 0 len land ...
面試題 16 19 水域大小(dfs)
1.問題描述 你有乙個用於表示一片土地的整數矩陣land,該矩陣中每個點的值代表對應地點的海拔高度。若值為0則表示水域。由垂直 水平或對角連線的水域為池塘。池塘的大小是指相連線的水域的個數。編寫乙個方法來計算矩陣中所有池塘的大小,返回值需要從小到大排序。示例 輸入 0,2,1,0 0,1,0,1 1...