Python 手写代码面试题, 写一个 Python 函数,给定矩阵的阶数 n,输出一个螺旋式数字矩阵
Python 手写代码面试题, 写一个 Python 函数,给定矩阵的阶数 n,输出一个螺旋式数字矩阵
QA
Step 1
Q:: 写一个 Python 函数,给定矩阵的阶数 n,输出一个螺旋式数字矩阵
A::
def generate_spiral_matrix(n):
matrix = [[0] * n for _ in range(n)]
left, right, top, bottom = 0, n - 1, 0, n - 1
num = 1
while left <= right and top <= bottom:
for i in range(left, right + 1):
matrix[top][i] = num
num += 1
top += 1
for i in range(top, bottom + 1):
matrix[i][right] = num
num += 1
right -= 1
if top <= bottom:
for i in range(right, left - 1, -1):
matrix[bottom][i] = num
num += 1
bottom -= 1
if left <= right:
for i in range(bottom, top - 1, -1):
matrix[i][left] = num
num += 1
left += 1
return matrix
# 示例调用
print(generate_spiral_matrix(3))
Step 2
Q:: 如何优化这个螺旋矩阵生成代码?
A:: 可以考虑减少不必要的检查和优化循环结构,比如通过提前计算边界来减少条件判断的次数。
Step 3
Q:: 解释 Python 列表推导式的使用场景及其优点。
A:: 列表推导式在创建和转换列表时非常有用,因其简洁和高效。优点包括代码简洁、执行速度快以及内存效率高。
用途
面试这个内容主要是考察候选人的算法设计和解决问题的能力,尤其是在处理矩阵和二维数组等数据结构时的灵活性。在实际生产环境中,类似的算法可以用于图像处理、路径规划以及数据的二维表示等场景。\n相关问题
🦆
如何判断一个矩阵是否是对称矩阵?▷
🦆
实现一个函数,计算两个矩阵的乘积.▷
🦆
用 Python 实现矩阵转置函数.▷