【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)) ]

猜你喜欢

转载自blog.csdn.net/u014381464/article/details/80576257