You are given a n x n 2D array grid containing distinct elements in the range [0, n² - 1].
Implement the NeighborSum class:
NeighborSum(int [][]grid) initializes the object.
int adjacentSum(int value) returns the sum of elements which are adjacent neighbors of value, that is either to the top, left, right, or bottom of value in grid.
int diagonalSum(int value) returns the sum of elements which are diagonal neighbors of value, that is either to the top-left, top-right, bottom-left, or bottom-right of value in grid.
classNeighborSum:def__init__(self,grid:List[List[int]]):defadjacentSum(self,value:int)->int:defdiagonalSum(self,value:int)->int:# Your NeighborSum object will be instantiated and called as such:# obj = NeighborSum(grid)# param_1 = obj.adjacentSum(value)# param_2 = obj.diagonalSum(value)
fromtypingimportListclassNeighborSum:def__init__(self,grid:List[List[int]]):n=len(grid)n2=n*nself._adjacent_sums=[0]*n2self._diagonal_sums=[0]*n2g=lambdax,y:grid[x][y]if0<=x<nand0<=y<nelse0foriinrange(n):forjinrange(n):v=grid[i][j]self._adjacent_sums[v]=g(i-1,j)+g(i,j-1)+g(i,j+1)+g(i+1,j)self._diagonal_sums[v]=g(i-1,j-1)+g(i-1,j+1)+g(i+1,j-1)+g(i+1,j+1)defadjacentSum(self,value:int)->int:returnself._adjacent_sums[value]defdiagonalSum(self,value:int)->int:returnself._diagonal_sums[value]# Your NeighborSum object will be instantiated and called as such:# obj = NeighborSum(grid)# param_1 = obj.adjacentSum(value)# param_2 = obj.diagonalSum(value)
评论需要 JavaScript。