admin 管理员组文章数量: 1086019
2024年4月21日发(作者:aid package)
二维数组相关题目
1、 题目一:矩阵转置
题目描述:
给定一个 n x m 的矩阵 matrix,返回该矩阵的转置。
矩阵的转置是指将矩阵的主对角线翻转,交换矩阵的行索引与列索引。
示例:
输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
输出:[[1,4,7],[2,5,8],[3,6,9]]
解析:
这个题目比较简单,只需要遍历原矩阵,将行和列交换即可。在 Python 中,可以
使用列表推导式来简洁地实现。
python
复制代码
def transpose(matrix):
return [list(i) for i in zip(*matrix)]
2、 题目二:搜索二维矩阵
题目描述:
编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。该矩阵具
有以下特性:
•
每行的元素从左到右升序排列。
•
每列的元素从上到下升序排列。
示例:
输入:matrix =
[[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 5
输出:true
解析:
由于矩阵的行和列都是升序排列的,我们可以从矩阵的右上角开始搜索。如果当前
元素等于目标值,则搜索成功;如果当前元素大于目标值,则目标值只可能出现在
当前元素的左边;如果当前元素小于目标值,则目标值只可能出现在当前元素的下
边。根据这个规律,我们可以不断缩小搜索范围,直到找到目标值或者搜索范围为
空。
python
复制代码
def searchMatrix(matrix, target):
if not matrix:
return False
row, col = 0, len(matrix[0]) - 1
while row < len(matrix) and col >= 0:
if matrix[row][col] == target:
return True
elif matrix[row][col] > target:
col -= 1
else:
row += 1
return False
3、 题目三:旋转图像
题目描述:
给定一个 n × n 的二维矩阵表示一个图像。将图像顺时针旋转 90 度。
注意,你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要
使用另一个矩阵来旋转图像。
示例:
输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
输出:[[7,4,1],[8,5,2],[9,6,3]]
解析:
这个问题可以通过先转置矩阵,然后反转每一行来解决。首先,我们将矩阵沿主对
角线翻转,然后再按列翻转。这两个操作合在一起就相当于顺时针旋转90度。
python
复制代码
def rotate(matrix):
n = len(matrix)
# 先转置矩阵
for i in range(n):
for j in range(i+1, n):
matrix[i][j], matrix[j][i] = matrix[j][i], matrix[i][j]
# 再反转每一行
for i in range(n):
for j in range(n//2):
matrix[i][j], matrix[i][n-j-1] = matrix[i][n-j-1], matrix[i][j]
版权声明:本文标题:二维数组相关题目 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1713699029a647537.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论