3033. 修改矩阵

简介: 3033. 修改矩阵

说在前面

🎈不知道大家对于算法的学习是一个怎样的心态呢?为了面试还是因为兴趣?不管是出于什么原因,算法学习需要持续保持。

题目描述

给你一个下标从 0 开始、大小为 m x n 的整数矩阵 matrix ,新建一个下标从 0 开始、名为 answer 的矩阵。使 answermatrix 相等,接着将其中每个值为 -1 的元素替换为所在列的 最大 元素。

返回矩阵 answer

示例 1:

输入: matrix = [[1,2,-1],[4,-1,6],[7,8,9]]
输出: [[1,2,9],[4,8,6],[7,8,9]]
解释: 上图显示了发生替换的元素(蓝色区域)。
- 将单元格 [1][1] 中的值替换为列 1 中的最大值 8 。
- 将单元格 [0][2] 中的值替换为列 2 中的最大值 9 。

示例 2:

输入: matrix = [[3,-1],[5,2]]
输出: [[3,2],[5,2]]
解释: 上图显示了发生替换的元素(蓝色区域)。

提示:

  • m == matrix.length
  • n == matrix[i].length
  • 2 <= m, n <= 50
  • -1 <= matrix[i][j] <= 100
  • 测试用例中生成的输入满足每列至少包含一个非负整数。

解题思路

使用一个数组来保存每一列的最大值,遍历矩阵,获取到每一列的最大值,获取到最大值之后再遍历一次矩阵,将矩阵中值为-1的元素全部替换为其所在列的最大值。

AC代码

/**
 * @param {number[][]} matrix
 * @return {number[][]}
 */
var modifiedMatrix = function (matrix) {
  const arr = new Array(matrix[0].length).fill(0);
  for (let i = 0; i < matrix.length; i++) {
    for (let j = 0; j < matrix[i].length; j++) {
      arr[j] = Math.max(arr[j], matrix[i][j]);
    }
  }
  for (let i = 0; i < matrix.length; i++) {
    for (let j = 0; j < matrix[i].length; j++) {
      if (matrix[i][j] === -1) matrix[i][j] = arr[j];
    }
  }
  return matrix;
};

公众号

关注公众号『前端也能这么有趣』,获取更多有趣内容。

说在后面

🎉 这里是 JYeontu,现在是一名前端工程师,有空会刷刷算法题,平时喜欢打羽毛球 🏸 ,平时也喜欢写些东西,既为自己记录 📋,也希望可以对大家有那么一丢丢的帮助,写的不好望多多谅解 🙇,写错的地方望指出,定会认真改进 😊,偶尔也会在自己的公众号『前端也能这么有趣』发一些比较有趣的文章,有兴趣的也可以关注下。在此谢谢大家的支持,我们下文再见 🙌。

目录
相关文章
|
存储 消息中间件 分布式计算
|
存储 缓存 Android开发
android 读取WebView缓存及清理WebView缓存
1.缓存的分类: 首先要说的一点是缓存的分类,我们缓存的数据分为:页面缓存和数据缓存 页面缓存:加载一个网页时的html、JS、CSS等页面或者资源数据,这些缓存资源是由于浏览器  的行为而产生,开发者只能通过配置HTTP响应头影响浏览器的行为才能间接地影响到这些缓存数据。
3836 0
|
算法
面试场景题:如何设计一个抢红包随机算法
本文详细解析了抢红包随机算法的设计与实现,涵盖三种解法:随机分配法、二倍均值法和线段切割法。随机分配法通过逐次随机分配金额确保总额不变,但易导致两极分化;二倍均值法优化了金额分布,使每次抢到的金额更均衡;线段切割法则将总金额视为线段,通过随机切割点生成子金额,手气最佳金额可能更高。代码示例清晰,结果对比直观,为面试中类似算法题提供了全面思路。
1938 16
|
存储 编解码 缓存
x264代码剖析(十七):核心算法之熵编码(Entropy Encoding)
<h1 style="text-align:center"><strong>x264<span style="font-family:宋体">代码剖析(十七):核心算法之熵编码(Entropy Encoding)</span></strong></h1> <p align="center"><strong></strong></p> <p> </p> <p><span style="
4856 0
|
机器学习/深度学习 编解码 人工智能
当前VR技术的限制与挑战:深入剖析与未来展望
【8月更文挑战第26天】当前VR技术在技术、内容、市场等多个层面仍面临诸多限制与挑战。然而,随着技术的不断创新和市场的逐步成熟,这些限制和挑战将逐渐得到克服。未来,VR技术有望在更多领域发挥重要作用,为用户带来更加丰富、便捷的沉浸式体验。我们期待VR技术的持续进步和广泛应用,共同见证这一科技领域的辉煌未来。
1280 2
|
存储 Kubernetes 监控
Kubernetes集群管理的最佳实践
【7月更文挑战第25天】遵循上述最佳实践可以显著提升Kubernetes集群的管理效率、安全性和性能。然而,每个集群的环境和需求都是独特的,因此在实际操作中还需根据具体情况进行调整和优化。希望本文能为你管理Kubernetes集群提供一些有益的参考。
高效、可泛化的高斯重建框架,只需3张视图即可快速推理,45秒便可完成优化
【6月更文挑战第12天】MVSGaussian是一种新型3D高斯表示方法,利用多视图立体技术进行高效、可泛化的高斯重建,仅需3张视图就能快速推理。它采用几何感知的高斯表示和混合高斯渲染,实现实时新视图生成与高质量重建。通过多视图几何一致聚合策略,MVSGaussian能快速优化场景。在多种数据集上表现出优越性能,但受限于输入图像质量和数量,且训练与优化过程可能耗时。论文链接:[Fast Generalizable Gaussian Splatting Reconstruction from Multi-View Stereo](https://arxiv.org/abs/2405.12218)
427 3
|
应用服务中间件 Apache
消息 Request method ‘POST‘ not supported
消息 Request method ‘POST‘ not supported
382 2
|
算法 IDE 程序员
【深入探究Qt内部架构】QObject、事件循环与Q_OBJECT宏的协同作用(三)
【深入探究Qt内部架构】QObject、事件循环与Q_OBJECT宏的协同作用
346 5

热门文章

最新文章

下一篇
开通oss服务