行业门户型网站制作临沂城乡建设管理局网站
news/
2025/9/22 20:18:09/
文章来源:
行业门户型网站制作,临沂城乡建设管理局网站,58同城类型网站制作,上海新闻官网1.73. 矩阵置零
给定一个 m x n 的矩阵#xff0c;如果一个元素为 0 #xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 提示#xff1a; m matrix.lengthn matrix[0].length1 m, n 200-2^31 matrix[i][j] 2^31 - 1 思路#xf…1.73. 矩阵置零
给定一个 m x n 的矩阵如果一个元素为 0 则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 提示 m matrix.lengthn matrix[0].length1 m, n 200-2^31 matrix[i][j] 2^31 - 1 思路
1先遍历以便用集合来存0元素的行号与列号再遍历对出现其中的元素进行清零。
2关键思想: 用matrix第一行和第一列记录该行该列是否有0,作为标志位。但是对于第一行,和第一列要设置一个标志位,为了防止自己这一行(一列)也有0的情况.注释写在代码里,直接看代码很好理解!
代码
第一个思路
class Solution(object):def setZeroes(self, matrix)::type matrix: List[List[int]]:rtype: None Do not return anything, modify matrix in-place instead.hanghaoset()liehaoset()lieshulen(matrix[0])for i in range(len(matrix)):for j in range(lieshu):if matrix[i][j]0:hanghao.add(i)liehao.add(j)for i in range(len(matrix)):for j in range(lieshu):if i in hanghao or j in liehao:matrix[i][j]0第二个思路
class Solution:def setZeroes(self, matrix: List[List[int]]) - None:Do not return anything, modify matrix in-place instead.row len(matrix)col len(matrix[0])row0_flag Falsecol0_flag False# 找第一行是否有0for j in range(col):if matrix[0][j] 0:row0_flag Truebreak# 第一列是否有0for i in range(row):if matrix[i][0] 0:col0_flag Truebreak# 把第一行或者第一列作为 标志位for i in range(1, row):for j in range(1, col):if matrix[i][j] 0:matrix[i][0] matrix[0][j] 0#print(matrix)# 置0for i in range(1, row):for j in range(1, col):if matrix[i][0] 0 or matrix[0][j] 0:matrix[i][j] 0if row0_flag:for j in range(col):matrix[0][j] 0if col0_flag:for i in range(row):matrix[i][0] 02.54. 螺旋矩阵 给你一个 m 行 n 列的矩阵 matrix 请按照 顺时针螺旋顺序 返回矩阵中的所有元素。 示例 1 输入matrix [[1,2,3],[4,5,6],[7,8,9]]
输出[1,2,3,6,9,8,7,4,5] 示例 2 输入matrix [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
输出[1,2,3,4,8,12,11,10,9,5,6,7] 提示 m matrix.lengthn matrix[i].length1 m, n 10-100 matrix[i][j] 100 思路
主要就是模拟关键在于设定上下左右边界。 取左边界到右边界以upper为行i为列从left到right 将上边界下移upper取上边界到下边界以right为列i为行从upper到down 将右边界左移--right取右边界到左边界以down为行i为列从right到left 将下边界上移--down取下边界到上边界以left为列i为行从down到upper 将左边界右移left 代码
class Solution {public ListInteger spiralOrder(int[][] matrix) {int mmatrix.length , nmatrix[0].length;ListInteger resnew ArrayList();int upper0 , downm-1 , left0 , rightn-1;while(true){for(int ileft;iright;i)res.add(matrix[upper][i]);if(upperdown)break;for(int iupper;idown;i)res.add(matrix[i][right]);if(--rightleft)break;for(int iright;ileft;i--)res.add(matrix[down][i]);if(--downupper)break;for(int i down;iupper;i--)res.add(matrix[i][left]);if(leftright)break;}return res;}
}
3.48. 旋转图像
给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。
你必须在 原地 旋转图像这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 示例 1 输入matrix [[1,2,3],[4,5,6],[7,8,9]]
输出[[7,4,1],[8,5,2],[9,6,3]]示例 2 输入matrix [[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,16]]
输出[[15,13,2,5],[14,3,4,1],[12,6,8,9],[16,7,10,11]]提示 n matrix.length matrix[i].length1 n 20-1000 matrix[i][j] 1000 思路 代码 4. 思路 代码
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/910248.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!