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]


本文标签: 矩阵 目标值 搜索 图像 题目