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

每日一题——LeetCode1252.奇数值单元格的数目

 进阶:你可以设计一个时间复杂度为 O(n + m + indices.length) 且仅用 O(n + m) 额外空间的算法来解决此问题吗?

方法一 直接模拟:

创建一个n x m的矩阵,初始化所有元素为0,对于indices中的每一对[ri,ci],将矩阵第ri行的所有数增加1,第ci列的所有数增加1.最后遍历矩阵得到奇数的数目

var oddCells = function(m, n, indices) {let res = 0;const matrix = new Array(m).fill(0).map(() => new Array(n).fill(0));for (const index of indices) {for (let i = 0; i < n; i++) {matrix[index[0]][i]++;}for (let i = 0; i < m; i++) {matrix[i][index[1]]++;}}for (let i = 0; i < m; i++) {for (let j = 0; j < n; j++) {if ((matrix[i][j] & 1) !== 0) {res++;}}}return res;
};

消耗时间和内存情况:

 

方法二 模拟空间优化

用一个行数组 rows 和列数组 cols 分别记录每一行和每一列被增加的次数。

对于 indices中的每一对 [ri,ci],我们将 rows[ri]和 cols[ci]的值分别增加 1。

位置 (x,y)位置的计数即为 rows[x]+cols[y]

遍历矩阵找出奇数的数目

var oddCells = function(m, n, indices) {const rows = new Array(m).fill(0);const cols = new Array(n).fill(0);for (const index of indices) {rows[index[0]]++;cols[index[1]]++;}let res = 0;for (let i = 0; i < m; i++) {for (let j = 0; j < n; j++) {if (((rows[i] + cols[j]) & 1) !== 0) {res++;}}}return res;
};

消耗时间和内存情况:

方法三 计数优化

见官方题解

作者:力扣官方题解
链接:1252.奇数值单元格的数目
 

http://www.lryc.cn/news/283646.html

相关文章:

  • C#学习笔记3-函数与单元测试
  • osg屏幕事件处理器和状态集操控器学习
  • 中国泛娱乐出海视频字幕解决方案
  • iOS原生应用屏幕适配完整流程
  • 【征服redis8】Redis的AOF持久化
  • 【动态规划】【二分查找】【C++算法】730. 统计不同回文子序列
  • android 和 opencv 开发环境搭建
  • elasticsearch[一]-索引库操作(轻松创建)、文档增删改查、批量写入(效率倍增)
  • tp6框架中Http类 请求的header、body参数传参 及post、file格式
  • 基于极限学习机的图像处理,基于ELM的图像分割,基于极限学习机的细胞分割
  • ELAU C400/A8/1/1/1/00嵌入式系统中的模块动态加载技术
  • github clone Failed to connect to github.com port 443 after xxx ms
  • ARM的一些基础知识
  • 零售的数字化转型,利用AWS云服务资源如何操作?
  • 【通知】我的教学文章《Rust跟我学》已全部上线
  • Docker安全基线检查需要修复的一些问题
  • MobX 的 Observable Array,如何转换成一个普通的数组
  • spring boot集成loback日志配置
  • 【mars3d】 graphic.bindPopup(inthtml).openPopup()无需单击小车,即可在地图上自动激活弹窗的效果。
  • 工厂企业消防安全AI可视化视频智能监管解决方案
  • 【并发编程】synchornized原理
  • 计算机网络-ACL访问控制列表
  • 论文学习记录之SeisInvNet(Deep-Learning Inversion of Seismic Data)
  • 深度学习中的优化方法
  • 【设计模式之美】重构(三)之解耦方法论:如何通过封装、抽象、模块化、中间层等解耦代码?
  • Spring MVC学习之——Controller类中方法的返回值
  • IDEA中启动项目报堆内存溢出或者没有足够内存的错误
  • Angular: DOCUMENT
  • mybatis-plus批量保存异常及效率优化
  • 查找局域网树莓派raspberry的mac地址和ip