LintCode 433: Number of Islands
来源:互联网 发布:mac用手机app 编辑:程序博客网 时间:2024/06/06 20:58
直接用了序贯算法写。然后发现!太麻烦了啊啊啊啊啊啊一道easy题写的心好累
(虽然时间复杂度挺好的。
class Solution {public: /** * @param grid a boolean 2D matrix * @return an integer */ int checkEqualList(vector< vector<int> >& equalList,int sign1,int sign2){ int signMin=min(sign1,sign2); int signMax=max(sign1,sign2); int i; for(i=0;i<equalList[signMin].size();i++) if(equalList[signMin][i]==signMax) return signMin; equalList[signMin].push_back(signMax); return signMin; } int numIslands(vector< vector<bool> >& grid) { int num=0; int columnSize; int rowSize; int i,j; if(grid.size()){ columnSize=grid[0].size(); rowSize=grid.size(); } else{ columnSize=rowSize=0; return 0; } vector< vector<int> > sign(rowSize,vector<int>(columnSize)); vector< vector<int> > equalList; for(i=0;i<rowSize;i++){ for(j=0;j<columnSize;j++){ if(!grid[i][j]) continue; //if the up and left points all have value of one, add their signs to equal list if(j-1>=0&&grid[i][j-1]==1&&i-1>=0&&grid[i-1][j]==1&&sign[i-1][j]!=sign[i][j-1]){ //add the large sign to the small sign's vector column. sign[i][j]=checkEqualList(equalList,sign[i-1][j],sign[i][j-1]); } else if(((j-1>=0&&grid[i][j-1]==0)||j==0) &&((i-1>=0&&grid[i-1][j]==0)||i==0)){ //if the up and left points don't exist or have value of one,add a new sign to equal list. equalList.push_back(vector<int>()); sign[i][j]=num; num++; } else{ if(j-1>=0&&grid[i][j-1]==1) sign[i][j]=sign[i][j-1]; else if(i-1>=0&&grid[i-1][j]==1) sign[i][j]=sign[i-1][j]; } }// cout<<"num:"<<num<<endl; } int minusNum=0; int equalSize=equalList.size(); for(i=0;i<equalSize;i++){// for(j=0;j<equalList[i].size();j++){// cout<<equalList[i][j]<<" ";// }// cout<<" i:"<<i<<endl; minusNum+=equalList[i].size(); }// for(i=0;i<rowSize;i++){// for(j=0;j<columnSize;j++){// cout<<sign[i][j]<<" ";//// if(grid[i][j]&&!sign[i][j])//// cout<<i<<" "<<j<<" ";// }//// cout<<endl;// } return num-minusNum; }};
0 0
- LintCode 433: Number of Islands
- [Lintcode]Number of Islands
- Number of Islands
- Number of Islands
- Number of Islands
- [LeetCode] Number of Islands
- Leetcode-Number of Islands
- Number of Islands
- Leetcode Number of Islands
- [LeetCode]Number of Islands
- Number of Islands
- Number of Islands
- [leetcode]Number of Islands
- [leetcode] Number of Islands
- leetcode Number of Islands
- leetcode:Number of Islands
- [leetcode] Number of Islands
- 200 Number of Islands
- Mysql Innodb死锁解决
- dba 常用查询
- ecshop调用指定栏目下的文章的方法
- 单行固定表头
- krpano全景之内置函数---asyncloop roundval 等(不定期更新)
- LintCode 433: Number of Islands
- C++上机
- js 间隔时间执行函数
- thinkphp核心源码注释|Storage.class.php
- JAX-WS与JAX-RS区别是什么?
- gcc,gdb,makefile
- Adoptable Storage
- 手工集成7牛SDK到YII2框架中
- 值传递和引用传递,java到底按什么传递的