📌  相关文章
📜  教资会网络 | UGC-NET CS 2017 年 11 月 – III |问题 66(1)

📅  最后修改于: 2023-12-03 15:26:05.379000             🧑  作者: Mango

教资会网络 | UGC-NET CS 2017 年 11 月 – III |问题 66

题目描述

编写一个程序,它接受两个整数 n 和 m 并返回一个二维数组,其大小为 n x m,其元素的值是从左到右,从上到下的正整数。

示例

输入: n = 3, m = 3 输出: [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ]

输入: n = 2, m = 4 输出: [ [1, 2, 3, 4], [5, 6, 7, 8] ]

解题思路

根据题目描述可知,需要返回一个 $n$ 行 $m$ 列的矩阵,可以直接通过双重循环生成,外循环控制行数,内循环控制列数,每次将矩阵对应位置的值记录为 $i * m + j + 1$,其中 $i$ 表示行数,$j$ 表示列数。

代码实现

代码实现非常简单,只需要使用双重循环即可生成二维数组,并返回即可。

def generate_matrix(n: int, m: int) -> List[List[int]]:
    matrix = [[0 for _ in range(m)] for _ in range(n)]
    num = 1
    for i in range(n):
        for j in range(m):
            matrix[i][j] = num
            num += 1
    return matrix

使用 [[0 for _ in range(m)] for _ in range(n)] 可以快速生成一个值为 0 的 $n$ 行 $m$ 列的二维数组,使用 matrix[i][j] = num 一行一行的生成整个矩阵元素,最后返回整个矩阵即可。

总结

本题考查了程序员面对简单问题的编码能力,要求在保证正确性的前提下尽可能简洁高效,对于比较基础的数据结构和算法有很好的考察作用,同时也提示程序员需要不断提升基础功底。