美文网首页
leetcode的每天一题更新

leetcode的每天一题更新

作者: 今天是晴天 | 来源:发表于2017-04-09 16:35 被阅读0次

题目:给一个二维数组,由0和1组成,1会组成某种形状,然后计算这个形状有多少条边,一条边就是一个一站宽度或者高度,最外面也算。大概就是这样,如果看题目的图片会更加清晰的。

思路:刚开始我一直想先把几种情况分开来,简直伤脑筋,分为几个胶,然后在边上的情况,然后一点也没接触边的情况,一分析简直伤脑筋,多次尝试后感觉脑袋发热,只好去吃个苹果透透气,吃完坐回来再分析一次感觉不对劲,这个问题其实很简单,只是我想复杂了,说到底所有的元素都有上下左右,只有根据上下左右来分析就简单的多,就拿上来分析,如果它上面已经没有了,就意味着这就是一条边,或者上面是0,那么它的上面也是一条边,其他面也是一样的分析。附上代码:

public class Solution {
    public int islandPerimeter(int[][] grid) {
        int result=0;
        for(int i=0;i<grid.length;i++){
            for(int j=0;j<grid[0].length;j++){
                if(grid[i][j]==1){
                    if(i==0 || grid[i-1][j]==0) result++;
                    if(j==grid[0].length-1 || grid[i][j+1]==0) result++;
                    if(i==grid.length-1 || grid[i+1][j]==0) result++;
                    if(j==0 || grid[i][j-1]==0) result++;
                }
            }
        }
        return result;
    }
}

相关文章

网友评论

      本文标题:leetcode的每天一题更新

      本文链接:https://www.haomeiwen.com/subject/diidattx.html