欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 金融 > 力扣hot100_矩阵_python版本

力扣hot100_矩阵_python版本

2025/2/21 3:13:03 来源:https://blog.csdn.net/yin2567588841/article/details/145666840  浏览:    关键词:力扣hot100_矩阵_python版本

73. 矩阵置零

给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。

class Solution:def setZeroes(self, matrix: List[List[int]]) -> None:m, n = len(matrix), len(matrix[0])row, col = [False] * m, [False] * nfor i in range(m):for j in range(n):if matrix[i][j] == 0:row[i] = col[j] = Truefor i in range(m):for j in range(n):if row[i] or col[j]:matrix[i][j] = 0

54. 螺旋矩阵

给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。

class Solution:def spiralOrder(self, matrix: List[List[int]]) -> List[int]:if not matrix: return []l, r, t, b, res = 0, len(matrix[0]) - 1, 0, len(matrix) - 1, []while True:for i in range(l, r + 1): res.append(matrix[t][i]) # left to rightt += 1if t > b: breakfor i in range(t, b + 1): res.append(matrix[i][r]) # top to bottomr -= 1if l > r: breakfor i in range(r, l - 1, -1): res.append(matrix[b][i]) # right to leftb -= 1if t > b: breakfor i in range(b, t - 1, -1): res.append(matrix[i][l]) # bottom to topl += 1if l > r: breakreturn res

48. 旋转图像

给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。
你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。

# 思路:先进行对角线交换,在每一行交换就完成转换90度
class Solution:def rotate(self, matrix: List[List[int]]) -> None:n = len(matrix)for j in range(n):for i in range(j):matrix[i][j], matrix[j][i] = matrix[j][i], matrix[i][j]for i in range(n):matrix[i].reverse()

240. 搜索二维矩阵 II

编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:

  • 每行的元素从左到右升序排列。
  • 每列的元素从上到下升序排列。

思路

在这里插入图片描述
从矩阵 matrix 左下角元素(索引设为 (i, j) )开始遍历,并与目标值对比:
当 matrix[i][j] > target 时,执行 i-- ,即消去第 i 行元素。
当 matrix[i][j] < target 时,执行 j++ ,即消去第 j 列元素。
当 matrix[i][j] = target 时,返回 true ,代表找到目标值。
若行索引或列索引越界,则代表矩阵中无目标值,返回 false 。

class Solution:def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:i, j = len(matrix) - 1, 0while i >= 0 and j < len(matrix[0]):if matrix[i][j] > target: i -= 1elif matrix[i][j] < target: j += 1else: return Truereturn False

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词