美文网首页
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