当前位置: 首页> 娱乐> 明星 > 济南网站优化seo_厦门免费推广平台_广州百度网站快速排名_搜索引擎推广

济南网站优化seo_厦门免费推广平台_广州百度网站快速排名_搜索引擎推广

时间:2025/8/8 23:49:40来源:https://blog.csdn.net/yin2567588841/article/details/146190390 浏览次数:0次
济南网站优化seo_厦门免费推广平台_广州百度网站快速排名_搜索引擎推广

一、73. 矩阵置零

在这里插入图片描述

  • 思路:
    遍历全部元素,遇到为0的行、列就保存行号,列好(这里要使用字典,为了去重)
  • 代码:
class Solution:def setZeroes(self, matrix: List[List[int]]) -> None:"""Do not return anything, modify matrix in-place instead."""row_set = set()col_set = set()# 标记所有需要置零的行和列for i in range(len(matrix)):for j in range(len(matrix[0])):if matrix[i][j] == 0:row_set.add(i)col_set.add(j)# 将标记的行和列置零for row in row_set:for j in range(len(matrix[0])):matrix[row][j] = 0for col in col_set:for i in range(len(matrix)):matrix[i][col] = 0

二、54. 螺旋矩阵

在这里插入图片描述

  • 思路:
    螺旋矩阵相关的题目建议都这样做,定义好l, r, t, b;while循环遍历整个矩阵,每次遍历一行或者一列,就缩小边界;判断边界是否违反常识,违反就跳出循环。
  • 代码:
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. 旋转图像

在这里插入图片描述

  • 思路:
    先将上下三角两两交换,再行交换
  • 代码:
# 思路:先进行对角线交换,在每一行交换就完成转换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()#       也可以写为
#		for i in range(n):
#			matrix[i] = matrix[i][::-1]

四、240. 搜索二维矩阵 II

在这里插入图片描述

  • 思路1:
    站在矩阵的右上角来说,当前元素是当前行最大,当前列的最小值。判断右上角元素和target的关系,从而简化剩余矩阵
  • 代码:
class Solution:def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:m, n = len(matrix), len(matrix[0])i, j = 0, n - 1                       # 从右上角开始while i < m and j >= 0:               # 还有剩余元素if matrix[i][j] == target:return True                   # 1.找到 targetif matrix[i][j] < target:i += 1  # 这一行剩余元素全部小于 target,排除else:j -= 1  # 这一列剩余元素全部大于 target,排除return False
关键字:济南网站优化seo_厦门免费推广平台_广州百度网站快速排名_搜索引擎推广

版权声明:

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

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

责任编辑: