• 463. Island Perimeter


    https://leetcode.com/problems/island-perimeter/

    在一个N×N的矩阵中,N<100,1代表岛,0代表海,岛内没有海,求岛的周长

    [[0,1,0,0],
     [1,1,1,0],
     [0,1,0,0],
     [1,1,0,0]]
    
    Answer: 16
    Explanation: The perimeter is the 16 yellow stripes in the image below:
    

    由正方形组成的不规则图形的周长和正方形个数有什么关系?

    这个就是这题的核心

    发散一下平移的思想,多一个右邻居,多两条边,多一个下邻居,多两条边(当然你也可以统计左上)

    公式就是“周长=正方形数量 * 4 - 邻居数量 * 2”

     1 class Solution(object):
     2     def islandPerimeter(self, grid):
     3         island, neighbor = 0, 0
     4         for i in xrange(0, len(grid)):
     5             for j in xrange(0, len(grid[i])):
     6                 if grid[i][j] == 1:
     7                     island += 1
     8                     if i < len(grid) - 1 and grid[i + 1][j] == 1:  # down neighbour
     9                         neighbor += 1
    10                     if j < len(grid[i]) - 1 and grid[i][j + 1] == 1:  # right neighbour
    11                         neighbor += 1
    12         return island * 4 - neighbor * 2
  • 相关阅读:
    Python安装appium 遇见的报错
    appium
    QQ邮箱/微信邮箱发送邮件
    Python-变量
    神秘的咒语
    宿命的PSS
    E. Congruence Equation
    D. Substring
    leetcode 761. Special Binary String
    F
  • 原文地址:https://www.cnblogs.com/TheLaughingMan/p/6225892.html
Copyright © 2020-2023  润新知