695.岛屿的最大面积(026)BFS
生活随笔
收集整理的這篇文章主要介紹了
695.岛屿的最大面积(026)BFS
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
二:思路
1.這里的遍歷數(shù)據(jù)方式為BFS廣度遍歷
2.當(dāng)我們遇到一個(gè)‘1’的時(shí)候,我們就遍歷他的左右上下(鄰接點(diǎn)),如果是1那就入隊(duì),直到隊(duì)列
為空為止。
3.我們記錄每個(gè)島嶼的面積是采用 我們?cè)O(shè)置初始值為1,當(dāng)每遇到一個(gè)鄰接點(diǎn)為1就統(tǒng)計(jì)其個(gè)數(shù)
直到該隊(duì)列為空,將其面積統(tǒng)計(jì)到一個(gè)容器當(dāng)中,最后計(jì)算出最大值
三:上碼
class Solution { public:int maxAreaOfIsland(vector<vector<int>>& grid) {/**思路:1.這里的遍歷數(shù)據(jù)方式為BFS廣度遍歷2.當(dāng)我們遇到一個(gè)‘1’的時(shí)候,我們就遍歷他的左右上下(鄰接點(diǎn)),如果是1那就入隊(duì),直到隊(duì)列為空為止。3.我們記錄每個(gè)島嶼的面積是采用 我們?cè)O(shè)置初始值為1,當(dāng)每遇到一個(gè)鄰接點(diǎn)為1就統(tǒng)計(jì)其個(gè)數(shù)直到該隊(duì)列為空,將其面積統(tǒng)計(jì)到一個(gè)容器當(dāng)中,最后計(jì)算出最大值*/int m = grid.size();//表示二維矩陣的行int n = grid[0].size();//表示二維矩陣的列vector<int> v;//存面積用的for(int i = 0; i < m; i++){for(int j = 0; j < n; j++){queue<pair<int,int> >q;int count = 0;if(grid[i][j] == 1){q.push({i,j});grid[i][j] = 0;//訪問過一個(gè)結(jié)點(diǎn) 就將其設(shè)置為 '0' count = 1;} //while(!q.empty()){auto temp = q.front();q.pop();int nr = temp.first;//代表行int nc = temp.second;//代表列//該節(jié)點(diǎn)的上方if(nr-1 >= 0 && grid[nr-1][nc] == 1){q.push({nr-1,nc});grid[nr-1][nc] = 0;count++;}//該節(jié)點(diǎn)的下方if(nr+1 < m && grid[nr+1][nc] == 1){q.push({nr+1,nc});grid[nr+1][nc] = 0;count++;}//該節(jié)點(diǎn)的左方if(nc-1 >= 0 && grid[nr][nc-1] == 1){q.push({nr,nc-1});grid[nr][nc-1] = 0;count++;}//該節(jié)點(diǎn)的右方if(nc+1< n && grid[nr][nc+1] == 1){q.push({nr,nc+1});grid[nr][nc+1] = 0;count++;}}v.push_back(count);}}sort(v.begin(),v.end());int temp = v.size() - 1; return v[temp];} }; 創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的695.岛屿的最大面积(026)BFS的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么打开win10的运行窗口win10怎
- 下一篇: PTA 数据结构与算法题目集(中文)