用Python计算矩阵的对角线之和
在这篇文章中,我们将学习一个Python程序来有效计算矩阵的对角线之和。
使用的方法
以下是完成这一任务的各种方法
- 使用嵌套的For循环
-
只使用单循环
在一个矩阵中,我们有两条对角线,即
- 主对角线
-
次对角线
例子
让我们来看看一个3×3的矩阵,如下图所示。
主对角线条件 – 行-列条件是行=列。主对角线是由3×3矩阵中的 A00、A11和A22 元素组成。
次要对角线条件 – 行-列条件是行=行数-列-1。主对角线是由3×3矩阵中的 A02、A11和A22 元素形成的。
方法1:使用嵌套的For循环
算法(步骤)
以下是执行所需任务时需要遵循的算法/步骤。-
- 创建一个函数 sumOfDiagonals() ,通过接受输入的矩阵和行作为参数来打印矩阵的对角线之和。
-
将一个变量初始化为0,以存储主对角线之和。
-
将另一个变量初始化为0,以存储第二对角线之和。
-
使用 for循环 来遍历矩阵的行数。
-
使用另一个 嵌套for循环, 来遍历当前行的所有列。
-
使用 if条件语句 检查行号是否等于列号(主对角线条件),如果为真,则矩阵元素值为主对角线之和。
-
同样,使用 if条件语句 检查 行数 和 列数 之 和 是否为 行数 (二级对角线条件),如果为真,则矩阵元素值为二级对角线之和。
-
打印输入矩阵的 主 对角线元素的结果和。
-
打印输入矩阵的 二次 对角线元素的结果和。
-
创建一个变量来存储 输入矩阵。
-
调用上面定义的 sumOfDiagonals() 函数,将输入矩阵和行数(维数)作为参数来打印对角线之和。
例子
下面的程序使用嵌套的for循环返回一个输入矩阵的对角线之和。
输出
在执行时,上述程序将产生以下输出:
时间复杂度 – O(N*N), 因为我们使用嵌套循环来遍历N*N次。
辅助空间– O(1)。因为我们没有使用任何额外的空间。
方法2:只使用单循环
例子
下面的程序使用唯一的for循环(Single Loop)返回一个输入矩阵的对角线之和。
输出
在执行过程中,上述程序将产生以下输出结果
时间复杂度 – O(N).因为我们使用了一个循环来遍历N次。
辅助空间– O(1)。因为我们没有使用任何额外的空间。
总结
在这篇文章中,我们了解了矩阵对角线,以及计算矩阵对角线之和的两种不同方法(主要和次要)。我们学习了一种高效的计算方法,只需要对矩阵进行一次遍历(O(N)时间复杂度)。