编写程序打印给定二维矩阵的对角线元素

2024 年 8 月 29 日 | 4 分钟阅读

在本教程中,我们将编写Python程序来打印给定矩阵的对角线元素。这是技术面试中可能遇到的常见程序。

给定一个二维矩阵,我们需要打印主对角线和副对角线。

输入

输出

Primary Diagonal: 1, 3, 9, 3
Secondary Diagonal: 4, 2, 8, 6

输入

输出

Primary Diagonal: 2, 2, 2
Secondary Diagonal: 2, 2, 2

让我们在Python中理解矩阵的行-列模式。

  • 要获取主对角线元素,我们需要找到Mat00、Mat11、Mat22和Mat33;它是由使用相同的行和列名称形成的。

输出

[['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i']]

Python中的矩阵表示

请记住,我们总是先写行号,然后写列号。矩阵中元素X的正确格式为X(R,C),其中R和C代表元素所在的行和列。

让我们看下面的3x3和2x2数字矩阵,Z代表一个2x3的字符串矩阵。

示例 -

输出

[['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i']]
[[27, 34], [61, 18]]
[['one', 'two', 'three'], ['four', 'five', 'six']]

现在我们对Python中的矩阵表示有了基本了解。现在让我们跳到解决方案部分。

解决方案

让我们理解第一种方法。

方法 - 1

在此方法中,我们将使用两个for循环处理列,一个循环处理行,并在内循环中检查条件。

示例 -

输出

Primary Diagonal is: 1,3,9,3,

解释 -

在上面的代码中,我们获取矩阵的行和列,并使用了两个for循环。在内循环中,我们检查条件,如果i和j相等,则打印相应的元素。

现在我们将编写程序来获取副对角线

示例 - 2

输出

Secondary Diagonal: 4, 2, 8, 6,

时间复杂度 - O(n2)

由于涉及嵌套循环,因此时间复杂度是平方的。

辅助空间:O(1)。

因为没有额外的空间被占用

方法 - 2

我们可以使用单个for循环来解决这个问题。让我们理解下面的例子。

示例 -

输出

Principal Diagonal: 1, 6, 3, 8,

解释 -

在上面的代码中,我们运行一个for循环直到矩阵长度n,并打印mat[i][i],其中i是索引变量。

对于副对角线元素

示例 - 2

输出

Secondary Diagonal: 4, 7, 2, 1,

解释 -

我们使用了与上面相同的方法,并打印mat[i][k],其中i是索引变量,k = matrix_length - 1,并且在i < n之前递减k。

复杂度分析

  • 时间复杂度:O (n)。
    由于涉及嵌套循环,因此时间复杂度是平方的。
  • 辅助空间:O (1)。
    因为没有额外的空间被占用。

下一个主题Python中的封装