zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    网站设计
    keepass口令管理实践
    Wireshark实践
    SSH
    Nmap
    python模拟进程状态
    简易计算器
    2020-2021-1 20201210 《信息安全专业导论》第十周学习总结
    助教总结 第八章
    Chapter 7. Chapter 8.
  • 原文地址:https://www.cnblogs.com/TheLaughingMan/p/6225892.html
Copyright © 2011-2022 走看看