前几天,收到一个面试题,发现某度、google等平台都没有合适的解答,我在这里把我的求解方法在这里展示一下,大家可以适当借鉴(蛮多判断可以适当的优化,大家可以自行处理)。
有一个n*n的矩阵,矩阵由 "0"和"1"组成,写一个算法检测矩阵中的所有"1"组成的图形是一个实心的正方形,结果为true或者false。
例如
0 0 1 1
0 0 1 1
0 0 0 0
0 0 0 0
结果为true;
1 1 1 1
1 0 0 1
1 0 0 1
1 1 1 1
结果为false;
0 0 1 1
0 0 1 1
0 1 0 0
0 0 0 0
结果为false;
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
结果为true
解决思路:
1.获取 1的总个数;
2.根据1的个数对特殊情况判断(全0或者全1)
3.获取第一个1往左1的个数和向下1的个数
4.根据向右以及向下1的个数以及1的总数做最终判断
代码展示:
以上就是我给出的解决方案。
第二种方案:http://www.jianshu.com/p/0edab75e1d16
网友评论
我给出了第二种思路,可以抽空看看,思路应该更简洁一些