首页 > 其他分享 >力扣21 打卡17 设计相邻元素求和服务

力扣21 打卡17 设计相邻元素求和服务

时间:2024-11-09 10:48:10浏览次数:3  
标签:21 17 int self value position 打卡 col row

思路:

该方案通过构建一个字典,将每个元素值映射到其在二维数组中的坐标位置,以便快速查找。adjacentSum 方法根据指定元素的坐标,计算其上下左右相邻元素之和;diagonalSum 方法则计算该元素的四个对角线相邻元素之和。每个方法通过判断相邻坐标是否在数组边界内,确保不越界访问。初始化字典的时间复杂度为 (O(n^2)),每次查询操作为 (O(1)),满足题目要求的效率。

from typing import List, Dict, Tuple

class NeighborSum:
    def __init__(self, grid: List[List[int]]):
        self.grid = grid
        self.n = len(grid)
        # Creating a dictionary to map each value to its (row, col) position in the grid
        self.value_to_position: Dict[int, Tuple[int, int]] = {}
        for i in range(self.n):
            for j in range(self.n):
                self.value_to_position[grid[i][j]] = (i, j)

    def adjacentSum(self, value: int) -> int:
        if value not in self.value_to_position:
            return 0
        row, col = self.value_to_position[value]
        adjacent_sum = 0
        # Checking all four possible adjacent cells (top, left, right, bottom)
        for dr, dc in [(-1, 0), (0, -1), (0, 1), (1, 0)]:
            new_row, new_col = row + dr, col + dc
            if 0 <= new_row < self.n and 0 <= new_col < self.n:
                adjacent_sum += self.grid[new_row][new_col]
        return adjacent_sum

    def diagonalSum(self, value: int) -> int:
        if value not in self.value_to_position:
            return 0
        row, col = self.value_to_position[value]
        diagonal_sum = 0
        # Checking all four diagonal cells (top-left, top-right, bottom-left, bottom-right)
        for dr, dc in [(-1, -1), (-1, 1), (1, -1), (1, 1)]:
            new_row, new_col = row + dr, col + dc
            if 0 <= new_row < self.n and 0 <= new_col < self.n:
                diagonal_sum += self.grid[new_row][new_col]
        return diagonal_sum

标签:21,17,int,self,value,position,打卡,col,row
From: https://blog.csdn.net/weixin_53420521/article/details/143641567

相关文章

  • 【蓝桥杯 2021 省 B2】特殊年份
    题目描述:今年是2021年,2021这个数字非常特殊,它的千位和十位相等,个位比百位大11,我们称满足这样条件的年份为特殊年份。输入55个年份,请计算这里面有多少个特殊年份。输入格式输入55行,每行一个44位十进制数(数值范围为10001000至99999999),表示一个年份。输出......
  • 第一天打卡,udp协议
    今天学了udp协议基础,udp协议是一种无连接的网络协议,提供一种简单的方式来输送数据。发送:要用到的方法封装在InetAddress类中,其中DatagramSocket对象ds相当于快递员身份,不传递参数值的话会随机生成端口,进行输送快递(数据),快递的身份由DatagrampPacket对象充当,把东西打包。其中的......
  • COMP2211A small shell interface
    Chapter5Week4:CreatingasmallshellinterfaceYoumustsubmityourworktotheappropriatesubmissionpointinGradescope,whichwillbeautomaticallymarked.Youshouldsubmitasinglefilecalledmy_shell.c.Anyotherfilesyousubmitwillnotbema......
  • day20-21之间的项目实战:若依ruoyi开发(可以跳过)
    一,项目概述官网文档地址:http://doc.ruoyi.vip/rouyi是一个后台管理系统,基于经典技术组合(springboot,apacheshiro,mybatis,thymeleaf)主要是让开发者注重专注业务,降低技术难度,从而节省人力成本,缩短项目周期,提高软件安全质量。系统要求JDK>=1.8myslq>=5.7maven>=3.8二,开发环......
  • NOIP2024模拟赛 #17 总结
    省流:T1对\(998244353\)取模,T2对\(mod\)取模,T3求排名,T4对\(10^9+7\)取模。比赛出锅不少。开T1,发现并没有前几天那么简单,对着题目盯了\(1\)h毫无思路,发现没看见所有高塔的高度两两不同这个条件,看到后略有思路,但是还不太行。后来说大样例出锅了,幸好没写。T2很......
  • 代码随想录算法训练营day39 day40| 198.打家劫舍 213.打家劫舍II 337.打家劫舍III
    学习资料:https://programmercarl.com/0198.打家劫舍.html#算法公开课动态规划的打家劫舍系列和股票买卖系列(股票还有贪心算法可解)学习记录:198.打家劫舍(一维dp数组,前n间房子都可偷的情况下的最高金额,每间房子偷数都是由前一间和前两间决定)点击查看代码classSolution(object)......
  • 1.5--1792:迷宫
    迷宫题目传送门思路:迷宫必须用深搜(我是深搜党)递归出口条件:if(ha==hb&&la==lb) { cout<<"YES"<<endl; flag=1;}//判断是否是终点判断越界if(dx>=0&&dx<n&&dy>=0&&dy<n&&s[dx][dy]=='.')主函数:i......
  • MS15-034 HTTP.sys 远程执行代码漏洞(原理扫描)/KB3021910、 KB2919355、KB3042553下
     KB3021910:https://www.microsoft.com/zh-cn/download/details.aspx?id=46824KB2919355:https://www.microsoft.com/zh-CN/download/details.aspx?id=42334KB3042553:https://www.microsoft.com/zh-CN/download/details.aspx?id=46500 MS15-034是一个严重的安全漏洞,它影响......
  • PostgreSQL技术大讲堂 - 第71讲:PostgreSQL 17 版本升级
     PostgreSQL技术大讲堂-第71讲,主题:PostgreSQL17版本升级讲课内容:PostgreSQL17版本升级  0、升级前准备工作  1、介绍小版本升级方式(pg12.2-to-pg12.20)  2、介绍大版本升级方式(pg12-to-pg17)  3、升级后验证   PostgreSQL版本更新很快,几乎......
  • 《DNK210使用指南 -CanMV版 V1.0》第三十六章 image图像色块追踪实验
    第三十六章image图像色块追踪实验1)实验平台:正点原子DNK210开发板2)章节摘自【正点原子】DNK210使用指南-CanMV版V1.03)购买链接:https://detail.tmall.com/item.htm?&id=7828013987504)全套实验源码+手册+视频下载地址:http://www.openedv.com/docs/boards/k210/ATK-DNK210.htm......