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

【1572. 矩阵对角线元素的和】

来源:力扣(LeetCode)

描述:

给你一个正方形矩阵 mat,请你返回矩阵对角线元素的和。

请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和。

示例 1:
1

输入:mat = [[1,2,3],[4,5,6],[7,8,9]]
输出:25
解释:对角线的和为:1 + 5 + 9 + 3 + 7 = 25
请注意,元素 mat[1][1] = 5 只会被计算一次。

示例 2:

输入:mat = [[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]]
输出:8

示例 3:

输入:mat = [[5]]
输出:5

提示:

  • n == mat.length == mat[i].length
  • 1 <= n <= 100
  • 1 <= mat[i][j] <= 100

方法一:遍历矩阵

思路与算法

我们知道矩阵中某个位置 (i, j) 处于对角线上,则一定满足下列条件之一:

  • i = j;
  • i + j = n − 1;

根据上述结论,我们可以遍历整个矩阵,如果当前坐标 (i, j) 满足 i = j 或者 i + j = n − 1 则表示该位置一定在对角线上,则把当前的数字加入到答案之中。

代码:

class Solution {
public:int diagonalSum(vector<vector<int>>& mat) {int n = mat.size(), sum = 0;for (int i = 0; i < n; ++i) {for (int j = 0; j < n; ++j) {if (i == j || i + j == n - 1) {sum += mat[i][j];}}}return sum;}
};

时间 12ms 击败 77.20%使用 C++ 的用户
内存 10.61mb 击败 89.00%使用 C++ 的用户
复杂度分析

  • 时间复杂度:O(n2),其中 n 是矩阵 mat 的行数。
  • 空间复杂度:O(1)。

方法二:枚举对角线元素

思路与算法

逐行遍历,记当前的行号为 i,则当前行中处于对角线的元素为: 坐标 (i, i) 和坐标 (i, n − i − 1),因此我们把 (i, i) 与 (i, n − i − 1) 处的数字加入到答案中。 如果 n 是奇数的话,则主对角线与副对角线存在交点 (⌊ n 2 n \over 2 2n⌋, ⌊ n 2 n \over 2 2n⌋),该点会被计算两次。所以当 n 为奇数的时候,需要减掉交点处的值。

代码:

class Solution {
public:int diagonalSum(vector<vector<int>>& mat) {int n = mat.size(), sum = 0, mid = n / 2;for (int i = 0; i < n; ++i) {sum += mat[i][i] + mat[i][n - 1 - i];}return sum - mat[mid][mid] * (n & 1);}
};

时间 12ms 击败 77.20%使用 C++ 的用户
内存 10.68mb 击败 54.80%使用 C++ 的用户
复杂度分析

  • 时间复杂度:O(n),其中 n 是矩阵 mat 的行数。
  • 空间复杂度:O(1)。
    author:力扣官方题解
http://www.lryc.cn/news/120210.html

相关文章:

  • GaussDB 开发篇+Java调用JDBC访问openGauss数据库
  • 钕铁硼永磁材料基本概念
  • 2005-2020年280个地级市绿色全要素生产率测算原始数据
  • 电流的测量(反馈电流表)
  • 白帽黑帽与linux安全操作
  • 【TypeScript】进阶之路语法细节,类型和函数
  • 每日一题 611有效三角形的个数(相向双指针)
  • Flink源码之JobMaster启动流程
  • C#,数值计算——抛物线插值与Brent方法(Parabolic Interpolation and Brent‘s Method)的计算方法与源程序
  • 基于Selenium技术方案的爬取界面内容实践
  • 线程记录(1)
  • requests
  • Python 监控 Windows 服务
  • ELK中grok插件、mutate插件、multiline插件、date插件的相关配置
  • 【C#】静默安装、SQL SERVER静默安装等
  • 在vue3中定义组件的5种方式
  • 算法训练营题目,忘了第几天了
  • 蓝桥杯-统计子矩阵
  • 在线预览Word、Excel、PowerPoint等文件
  • 准确预测极端降水,哥伦比亚大学推出升级版神经网络 Org-NN
  • 【数据结构】反转链表、链表的中间节点、链表的回文结构(单链表OJ题)
  • Python爬虫-抓取的目标数据为#x开头,怎么解决?
  • 短视频账号矩阵系统/技术开发搭建私有部署
  • 光致发光二极管光源——荧光效率检测系统
  • 【手撕C语言】多线程
  • Dubbo2-概述
  • 【将回声引入信号中】在语音或音频文件中引入混响或简单回声,以研究回声延迟和回波幅度对生成的回波信号感知的影响(Matlab代码实现)
  • pythonocc进阶学习:投影projection
  • Scractch3.0_Arduino_ESP32_学习随记_显示网络天气(二)
  • Mysql压力测试(sysbench)