如何在4×4矩阵中找出所有长度为3的对角线?求解题思路
解题切入点与方向指导
核心前提
先明确三个关键参数:矩阵的行数rows、列数cols,以及目标对角线长度target_len(此处为3)。所有符合要求的对角线分为左上→右下和右上→左下两种方向,可分开处理。
1. 处理左上→右下的正对角线
起点范围判定
要生成长度为target_len的正对角线,起点的行索引i和列索引j必须满足:
i + target_len - 1 < rows:确保从起点向下走target_len-1步后,不超出矩阵的行边界j + target_len - 1 < cols:确保从起点向右走target_len-1步后,不超出矩阵的列边界
生成对角线逻辑
对每个符合条件的起点(i,j),依次取matrix[i + k][j + k](k从0到target_len-1),即可得到一条完整的目标对角线。
以你提供的4×4矩阵为例:
- 行索引
i可选0、1(0+2=2<4,1+2=3<4) - 列索引
j可选0、1(0+2=2<4,1+2=3<4) - 对应生成的4条对角线:
[1,12,23]、[2,13,24]、[11,22,33]、[12,23,34]
2. 处理右上→左下的反对角线
起点范围判定
要生成长度为target_len的反对角线,起点的行索引i和列索引j必须满足:
i + target_len - 1 < rows:确保从起点向下走target_len-1步后,不超出矩阵的行边界j - target_len + 1 >= 0:确保从起点向左走target_len-1步后,不超出矩阵的列边界
生成对角线逻辑
对每个符合条件的起点(i,j),依次取matrix[i + k][j - k](k从0到target_len-1),即可得到一条完整的目标对角线。
以你提供的4×4矩阵为例:
- 行索引
i可选0、1(0+2=2<4,1+2=3<4) - 列索引
j可选3、2(3-2=1≥0,2-2=0≥0) - 对应生成的4条对角线:
[4,13,22]、[3,12,21]、[14,23,32]、[13,22,31]
内容的提问来源于stack exchange,提问作者Paul
相关产品推荐
相关产品推荐

