Leetcode题解
来源:互联网 发布:马云淘宝的成功 编辑:程序博客网 时间:2024/06/11 04:03
Given a 2d grid map of ‘1’s (land) and ‘0’s (water), count the number of islands. An island is surrounded by water and is formed by connecting adjacent lands horizontally or vertically. You may assume all four edges of the grid are all surrounded by water.
Example 1:
11110
11010
11000
00000Answer: 1
Example 2:
11000
11000
00100
00011Answer: 3
链接
DFS非递归做法,手残递归想不出,西西里上写了好久才做出来,顺手翻了下leetcode果然有
直接抄的西西里上的版本,函数名之类的懒得改了。
class Solution {public: int countConnectedOnes(vector<vector<char> >& A) { int szrow=A.size(),szcul=A[0].size(); int maze[szrow][szcul]; memset(maze,0,szrow*szcul*sizeof(int)); stack<int> st; int ispart=0,count=0; for(int i=0;i<szrow;i++){ for(int j=0;j<szcul;j++){ if(A[i][j]=='1' && maze[i][j]==0) { st.push(i); st.push(j); maze[i][j]=1; ispart=1; } while(!st.empty()){ int tpj=st.top(); st.pop(); int tpi=st.top(); st.pop(); int flag=1; while(flag==1){ if(tpj-1>-1 && A[tpi][tpj-1]=='1' && maze[tpi][tpj-1]==0){ st.push(tpi); st.push(tpj-1); maze[tpi][tpj-1]=1; }//左 if(tpj+1<szcul && A[tpi][tpj+1]=='1' && maze[tpi][tpj+1]==0){ st.push(tpi); st.push(tpj+1); maze[tpi][tpj+1]=1; }//右 if(tpi-1>-1 && A[tpi-1][tpj]=='1' && maze[tpi-1][tpj]==0){ st.push(tpi-1); st.push(tpj); maze[tpi-1][tpj]=1; }//上 if(tpi+1<szrow && A[tpi+1][tpj]=='1' && maze[tpi+1][tpj]==0){ st.push(tpi+1); st.push(tpj); maze[tpi+1][tpj]=1; }//下 flag=0; } ispart=1; } if(ispart) count++; ispart=0; } } return count; }};
阅读全文
0 0
- leetcode题解
- leetcode题解
- LeetCode 题解
- leetCode题解
- leetcode题解
- leetcode题解
- leetcode题解
- LeetCode题解
- LeetCode题解
- Leetcode题解
- Leetcode题解
- Leetcode题解
- Leetcode题解
- Leetcode题解
- Leetcode题解
- Leetcode题解
- Leetcode题解
- Leetcode题解
- ajax
- 一款安卓日历(一)
- 【资料合集】2017云栖大会·上海峰会回顾合集:PDF下载+现场视频
- Ext-用散点图(chart)分析相关性
- Zabbix监控oracle数据库
- Leetcode题解
- int整数转16进制
- Node.js 连接 MySQL
- linux下,修改tomcat的默认端口号
- LeetCode题解(Week 16):3. Longest Substring Without Repeating Characters
- 列表视图控件(List Control)
- 软考题型汇总
- javascript中apply和call方法的作用及区别说明
- hdoj 1091