欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

LeetCode刷题日记-数组-1476. 子矩形查询

程序员文章站 2022-06-07 23:34:27
...

题目描述

题目链接:https://leetcode-cn.com/problems/subrectangle-queries/
LeetCode刷题日记-数组-1476. 子矩形查询
LeetCode刷题日记-数组-1476. 子矩形查询

题解

# 暴力解法
class SubrectangleQueries:

    def __init__(self, rectangle: List[List[int]]):
        self.rectangle = rectangle


    def updateSubrectangle(self, row1: int, col1: int, row2: int, col2: int, newValue: int) -> None:
        for i in range(row1, row2+1):
            for j in range(col1, col2+1):
                self.rectangle[i][j] = newValue   # 列表索引[i],矩阵索引[i][j]


    def getValue(self, row: int, col: int) -> int:
        return self.rectangle[row][col]

要注意的地方是矩阵的索引是matrix[i][j],而不是matrix[i,j] (但是numpy中的array支持此操作), 并且双重列表是不支持直接取子矩阵的,但是numpy中的array支持,例如

>> import numpy as np
>> l = [[1,2,3], [4,5,6], [7,8,9]]
>> l[1,2]  
>TypeError: list indices must be integers or slices, not tuple
>> l[1:,1:]
>TypeError: list indices must be integers or slices, not tuple  ># 如果想取子矩阵应该输出[ [5,6], [8,9]]
>> a = np.array(l)
>> a[1,2]
>6
>> a[1:,1:]
>array([[5, 6],
       [8, 9]])

·因此,借助numpy的特性,于是就有了以下解法,非常巧妙!·
LeetCode刷题日记-数组-1476. 子矩形查询

相关标签: 数组 算法