您好,欢迎来到五一七教育网。
搜索
您的当前位置:首页Leetcode3242:设计相邻元素求和服务

Leetcode3242:设计相邻元素求和服务

来源:五一七教育网

题目描述:

给你一个 n x n 的二维数组 grid,它包含范围 [0, n2 - 1] 内的不重复元素。实现 neighborSum 类:

  • neighborSum(int [][]grid) 初始化对象。
  • int adjacentSum(int value) 返回在 grid 中与 value 相邻的元素之,相邻指的是与 value 在上、左、右或下的元素。
  • int diagonalSum(int value) 返回在 grid 中与 value 对角线相邻的元素之,对角线相邻指的是与 value 在左上、右上、左下或右下的元素

  代码思路:

这个代码定义了一个名为 NeighborSum 的类,它用于计算在一个二维整数网格(grid)中,给定值的相邻元素和以及对角相邻元素和。以下是代码思路的详细解释:

总结

  • 这个类提供了一种方便的方法来计算一个二维整数网格中,给定值的相邻和对角相邻元素的和。
  • 它使用了两个私有辅助方法来处理边界检查和索引查找,从而简化了主方法的逻辑。
  • class NeighborSum:
        def __init__(self, grid: List[List[int]]):
            self.grid = grid
            self.row = len(grid)
            self.col = len(grid[0])
    
        def __getval(self, i, j):
            if i < 0 or i >= self.row or j < 0 or j >= self.col:
                return 0
            return self.grid[i][j]
        
        def __getij(self, val):
            for i in range(self.row):
                for j in range(self.col):
                    if self.grid[i][j] == val:
                        return i, j
    
        def adjacentSum(self, value: int) -> int:
            i, j = self.__getij(value)
            return (
                self.__getval(i - 1, j)
                + self.__getval(i + 1, j)
                + self.__getval(i, j - 1)
                + self.__getval(i, j + 1)
            )
    
        def diagonalSum(self, value: int) -> int:
            i, j = self.__getij(value)
            return (
                self.__getval(i - 1, j - 1)
                + self.__getval(i + 1, j + 1)
                + self.__getval(i + 1, j - 1)
               + self.__getval(i - 1, j + 1)
            ) 
    
    

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 517ttc.cn 版权所有 赣ICP备2024042791号-8

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务