LeetCode面試題 16 19 水域大小

2021-10-09 09:44:09 字數 1101 閱讀 7182

面試題 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...