LeetCode 2679. Sum in a Matrix【数组,排序】中等

news/2025/3/16 20:55:15/

本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章中,我不仅会讲解多种解题思路及其优化,还会用多种编程语言实现题解,涉及到通用解法时更将归纳总结出相应的算法模板。

为了方便在PC上运行调试、分享代码文件,我还建立了相关的仓库:https://github.com/memcpy0/LeetCode-Conquest。在这一仓库中,你不仅可以看到LeetCode原题链接、题解代码、题解文章链接、同类题目归纳、通用解法总结等,还可以看到原题出现频率和相关企业等重要信息。如果有其他优选题解,还可以一同分享给他人。

由于本系列文章的内容随时可能发生更新变动,欢迎关注和收藏征服LeetCode系列文章目录一文以作备忘。

给你一个下标从 0 开始的二维整数数组 nums 。一开始你的分数为 0 。你需要执行以下操作直到矩阵变为空:

  1. 矩阵中每一行选取最大的一个数,并删除它。如果一行中有多个最大的数,选择任意一个并删除。
  2. 在步骤 1 删除的所有数字中找到最大的一个数字,将它添加到你的 分数 中。

请你返回最后的 分数 。

示例 1:

输入:nums = [[7,2,1],[6,4,2],[6,5,3],[3,2,1]]
输出:15
解释:第一步操作中,我们删除 7663 ,将分数增加 7 。下一步操作中,删除 2452 ,将分数增加 5 。最后删除 1231 ,将分数增加 3 。所以总得分为 7 + 5 + 3 = 15

示例 2:

输入:nums = [[1]]
输出:1
解释:我们删除 1 并将分数增加 1 ,所以返回 1

提示:

  • 1 <= nums.length <= 300
  • 1 <= nums[i].length <= 500
  • 0 <= nums[i][j] <= 10^3

解法 排序

由于每次删除操作中,每行删除的元素即为当前行中的最大值,因此可直接将每行元素按从大到小排序,然后按照列遍历矩阵,每次删除操作的得分即为当前列的最大值。累加这些最大值,即为答案。

class Solution {
public:int matrixSum(vector<vector<int>> &nums) {for (auto &row: nums)sort(row.begin(), row.end());int ans = 0, n = nums[0].size();for (int j = 0; j < n; j++) {int mx = 0;for (auto &row: nums)mx = max(mx, row[j]);ans += mx;}return ans;}
};

复杂度分析:

  • 时间复杂度: O ( m n log ⁡ n ) O(mn\log n) O(mnlogn) ,其中 m m m n n n 分别为 n u m s nums nums 的行数和列数。
  • 空间复杂度: O ( 1 ) O(1) O(1) 。忽略排序时的栈开销,仅用到若干额外变量。

http://www.ppmy.cn/news/724349.html

相关文章

正则 泰文字母

有东南亚业务的正则的时候可能需要校验泰文字母 限制输入&#xff1a;泰文字母和字母 private static final String NUMBER_REGEX "^[\\u0E00-\\u0E7F0-9]{2,12}$";

Linux系统安装中文字体

在项目中要实现文件预览功能&#xff0c;使用OpenOffice将文件转为PDF格式做预览处理&#xff0c;安装并启动openoffice后发现可以预览了&#xff0c;但是中文显示不出来&#xff0c;主要原因是系统上没有安装中文字体&#xff1b; 首先查看系统字体存放路径 cat /etc/fonts/…

Typora字体排版

Typora字体排版 字体样式字体颜色 Typora使用参考设置&#xff1a; 主题&#xff1a;github 偏好设置&#xff1a;内联公式等 字体样式 \字体信息{内容} 字体表达实例罗马体\rm a b c \rm{abc} abc意大利体\it a b c \it{abc} abc等线体\sf a b c \sf{abc} abc打字机体\tt a…

Typora更改字体

环境&#xff1a; MacOS Big Sur 11.1 Typora版本&#xff1a;0.9.9.36 背景介绍&#xff1a; 本文适用于不想重写[css]文件&#xff0c;且只需要更改theme字体的人群。或者通过更改body{font}字段无法成功&#xff1b; 步骤 打开Typora theme folder找到文件<base.user.cs…

泰文utf-8转unicode编码实现

前言:最近的有个项目是要读取泰文然后将泰文叠加到图片上。查了一周的资料,所有的流程已经走通了。 一、实现原理 想要将泰文叠加到图片上需要两个步骤: 泰文转成unicode编码: 泰文实际上是utf-8编码的,这也就是编译器以utf-8的格式才可以正常显示泰文的原因。unicode编…

Linuxqt如何安装中文字体

Linux&qt如何安装中文字体 方法1 将windows下的字体拷贝出来 c:\WINDOWS\Fonts 雅黑&#xff1a;msyh.ttf 黑体&#xff1a;SimHei.ttf 宋体&#xff1a;SimSun.ttf 华文细黑&#xff1a;STXihei.ttf 华文楷体&#xff1a;STKaiti.ttf 安卓默认字库: DroidSansFallback.…

文字和字体

显示文字是本书所要解决的首要问题&#xff0c;现在我们来研究Microsoft Windows中各种有效字体和字体大小的使用方法以及调整文字的方式。 Windows 3.1发表的TrueType使程式写作者和使用者以灵活的方式处理文字的能力大幅增强。TrueType是轮廓字体技术&#xff0c;由Apple Com…

Typora 中文字体深度修改

本文的 “深度修改” 将涉及以下方面: Typora 界面元素的字体 Typora 某个主题或所有主题的字体 针对 Markdown Codeblock 区域字体失效现象, 本文也做了修正 (如下图所示) 正文 第一步 打开用户配置文件 (C:\Users\{YourName}\AppData\Roaming\Typora\conf\conf.user.j…