当前位置: 首页 > news >正文

Leetcode 3548. Equal Sum Grid Partition II

  • Leetcode 3548. Equal Sum Grid Partition II
    • 1. 解题思路
    • 2. 代码实现
  • 题目链接:3548. Equal Sum Grid Partition II

1. 解题思路

这一题是题目3546. Equal Sum Grid Partition I的进阶版本,不过本质上还是差不多的。

相较于题目3546,这里的改动是可以允许至多一个元素的清零,但不能使得区域不连续。

因此,我们就是分别要在横向和纵向考察以每一个位置进行切分时,两侧的元素差,然后考察较多的那一部分是否恰好有与差值完全相同的元素,且这个元素如果被去除的话是否会将对应的区域完全切断开来,这个我们只需要分类考察一下即可。

2. 代码实现

给出python代码实现如下:

class Solution:def canPartitionGrid(self, grid: List[List[int]]) -> bool:n, m = len(grid), len(grid[0])cnt = defaultdict(int)tot = 0for i in range(n):for j in range(m):cnt[grid[i][j]] += 1tot += grid[i][j]_cnt = defaultdict(int)_tot = 0for i in range(n-1):for j in range(m):_cnt[grid[i][j]] += 1_tot += grid[i][j]delta = 2 * _tot - totif delta == 0:return Trueelif delta > 0:if _cnt[delta] > 0 and i > 0 and m > 1:return Trueelif i > 0 and m == 1 and (grid[0][0] == delta or grid[i][0] == delta):return Trueelif i == 0 and (grid[0][0] == delta or grid[0][-1] == delta):return Trueelse:if cnt[-delta] - _cnt[-delta] > 0 and i < n-2 and m > 1:return Trueelif i < n-2 and m == 1 and (grid[-1][0] == -delta or grid[i+1][0] == -delta):return Trueelif i == n-2 and (grid[-1][0] == -delta or grid[-1][-1] == -delta):return True_cnt = defaultdict(int)_tot = 0for j in range(m-1):for i in range(n):_cnt[grid[i][j]] += 1_tot += grid[i][j]delta = 2 * _tot - totif delta == 0:return Trueelif delta > 0:if _cnt[delta] > 0 and j > 0 and n > 1:return Trueelif j > 0 and n == 1 and (grid[0][0] == delta or grid[0][j] == delta):return Trueelif j == 0 and (grid[0][0] == delta or grid[-1][0] == delta):return Trueelse:if cnt[-delta] - _cnt[-delta] > 0 and j < m-2 and n > 1:return Trueelif j < m-2 and n == 1 and (grid[0][-1] == -delta or grid[0][j+1] == -delta):return Trueelif j == m-2 and (grid[0][-1] == -delta or grid[-1][-1] == -delta):return Truereturn False      

提交代码评测得到:耗时847ms,占用内存57.9MB。

http://www.dtcms.com/a/188236.html

相关文章:

  • 常见网卡接口命名方式
  • OpenAI for Countries:全球AI基础设施的“技术基建革命”
  • 苍穹外卖--新增菜品
  • 新华三H3CNE网络工程师认证—路由参数与比较
  • Gartner《如何有效融合Data Fabric 与Data Mesh数据战略》学习心得
  • DeepBook 与 CEX 的不同
  • github 上的 CI/CD 的尝试
  • 【言语】刷题3
  • visual studio生成动态库DLL
  • 【MySQL】MySQL数据库结构与操作
  • QT 插槽实现
  • WebpackVite总结篇与进阶
  • Kotlin 中的 Unit 类型的作用以及 Java 中 Void 的区别
  • 2025深圳杯D题法医物证多人身份鉴定问题四万字思路
  • Rodrigues旋转公式-绕任意轴旋转
  • FPGA图像处理(六)------ 图像腐蚀and图像膨胀
  • 智能手表整机装配作业指导书(SOP)
  • 贪吃蛇游戏排行榜模块开发总结:从数据到视觉的实现
  • AI 编程新时代!字节 Seed-Coder 重磅登场
  • 在Babylon.js中实现完美截图的艺术:包含Canvas和HTML覆盖层
  • 在Flutter上如何实现按钮的拖拽效果
  • SQL 索引优化指南:原理、知识点与实践案例
  • cocos creator 3.8 下的 2D 改动
  • C++的历史与发展
  • 特征偏移、标签偏移、数量偏移、概念漂移分别是什么?
  • 共享代理IP带宽受限影响大吗
  • 【经验总结】【乘法替换方法】
  • 无线定位之四 SX1302 网关源码 thread_jit 线程详解
  • Linux文件编程——标准库函数(fopen等)和系统调用函数(open等)的区别
  • 51c嵌入式~电路~合集27