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

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.xdnf.cn/news/5781.html

相关文章:

  • Andorid之TabLayout+ViewPager
  • 通过POI实现对word基于书签的内容替换、删除、插入
  • 网络协议与系统架构分析实战:工具与方法全解
  • 【应用密码学】实验五 公钥密码2——ECC
  • 深入 MySQL 查询优化器:Optimizer Trace 分析
  • 初入OpenCV
  • 【Qt】qss语法详解
  • [250512] Node.js 24 发布:ClangCL 构建,升级 V8 引擎、集成 npm 11
  • MapReduce 模型
  • AI 模型训练轻量化技术在军事领域的实战应用与技术解析
  • Excelize 开源基础库发布 2.9.1 版本更新
  • ThingsBoard使用Cassandra部署时性能优化
  • c++进阶——哈希表的实现
  • Linux进程信号处理(26)
  • Maven 动态插件配置:Profile的灵活集成实践
  • 小白成长之路-vim编辑
  • 阿克曼-幻宇机器人系列教程2- 机器人交互实践(Topic)
  • 快速上手Linux nfs网络文件系统
  • 仿正点原子驱动BMP280气压传感器实例
  • 3335. 字符串转换后的长度 I
  • Babylon.js学习之路《四、Babylon.js 中的相机(Camera)与视角控制》
  • MySQL基本查询
  • git经验
  • Electron-Vue3、Electron-React、Electron-Angular打造舆情监控系统项目
  • SimScape物理建模实例1--单质量-弹簧-阻尼系统
  • maxtext开源程序是一个简单、高性能和可扩展的 Jax LLM!
  • rsync
  • 2024年北理工Python123第六章测验题整理
  • 2094. 找出 3 位偶数
  • 稠密连接网络(DensoNet)