LeetCode883

本题注意点:二维list的骚操作, 包括① 列表生成式,② map()

  理解:

      ① 类比数据库中的SELECT…FROM…WHERE,如生成100以内的完全平方数

             [x * x for x in range(1, 11) if x % 2 == 0]

      上方代码得到一个list,然后还可以继续套sum、max等 

      ② 参考链接 http://www.runoob.com/python/python-func-map.html

          map(): 第一个参数 func对每一个元素调用 func函数,Python 2.x 返回列表,Python 3.x 返回迭代器。

import numpy as np

def projectionArea(grid):
    """
    :type grid: List[List[int]]
    :rtype: int
    """
    ans = sum(max(temp) for temp in grid)
    for i in range(len(grid)):
        ans += max(grid[j][i] for j in range(len(grid)))
        ans += sum(int(grid[j][i] > 0) for j in range(len(grid)))
    return ans

    # version2: 列表生产式还可以使用两层循环,将二维展开成一维
    # A = grid
    # N = len(grid)
    # r = sum([1 if A[i][j] > 0 else 0 for j in range(N) for i in range(N)])
    # r += sum([max(A[i]) for i in range(N)])
    # r += sum([max(A[j][i] for j in range(N)) for i in range(N)])
    # return r

    # version3:
    # return sum(map(max, grid)) + sum(map(max, zip(*grid))) + sum(v > 0 for row in grid for v in row)

# samples:
grids = [
    [[2]],
    [[1,2],[3,4]],
    [[1,0],[0,2]],
    [[1,1,1],[1,0,1],[1,1,1]],
    [[2,2,2],[2,1,2],[2,2,2]]
]
for grid in grids:
    print(projectionArea(grid))

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值