【leetcode】807 max increase to keep city skyline

本想把二维数组转成numpy来做,但是总是编译不过。。又是int64又是max()函数没法用的。。

尝试了import,可以用

import numpy as np
import math
class Solution:
    def maxIncreaseKeepingSkyline(self, grid):
        """
        :type grid: List[List[int]]
        :rtype: int
        """
        ant = 0
        maxi = [max(x) for x in grid]
        J = [[r[col] for r in grid] for col in range(len(grid))]
        maxj = [max(x) for x in J]
        for i in range(len(grid)):
            for j in range(len(grid[0])):
                ant += min(maxi[i]-grid[i][j], maxj[j]-grid[i][j])
        return ant

python3  108ms  15.14% 涉及到横纵轴找最大值,转置等

python2   113ms 8.39%  才发现python2和python3里面排序不一样,估计提交python2的人更多

class Solution(object):
    def maxIncreaseKeepingSkyline(self, grid):
        """
        :type grid: List[List[int]]
        :rtype: int
        """
        r, c = len(grid), len(grid[0])
        mcs = map(max, *grid)
        mrs = map(max, grid)
        ans = 0
        for x in range(r):
            for y in range(c):
                ans += min(mcs[y], mrs[x]) - grid[x][y]
        return ans

python2   106ms    8.92%   python3则编译错误,map好像不能用

加※之后好像转置了一样的效果不能在外面使用,只能在map中好像

----------------------------------------------

还有两种二维数组转置方法

1. lrGrid = zip(*grid)

2. lrGrid = [[r[col] for r in grid] for col in range(len(grid)) ]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值