当前位置: 首页 > news >正文

海外sns网站网站结构建设方案

海外sns网站,网站结构建设方案,短视频推广,专门做处理货的网站矩阵置零 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为0 。请使用 原地 算法。在计算机科学中,一个原地算法(in-place algorithm)是一种使用小的,固定数量的额外之空间来转…

矩阵置零

给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为0 。请使用 原地 算法。在计算机科学中,一个原地算法(in-place algorithm)是一种使用小的,固定数量的额外之空间来转换资料的算法。当算法执行时,输入的资料通常会被要输出的部分覆盖掉。不是原地算法有时候称为非原地(not-in-place)或不得其所(out-of-place)。

在这里插入图片描述
输入:二维数组
输出:二维数组
思路

方法一:使用两个标记数组
两个标记数组分别记录每一行和每一列是否有零出现,如果出现,则将对应的标记数组置为true,最后再次遍历数组,用标记数组更新原数组即可

class Solution {public void setZeroes(int[][] matrix) {//用变量定义数组的行和列的长度,方便写代码int m = matrix.length;int n = matrix[0].length;//定义标记数组boolean [] row = new boolean[m];boolean [] col = new boolean[n];//对标记数组进行赋值for(int i = 0;i < m;i++){for(int j = 0;j < n;j++){if(matrix[i][j] == 0){row[i] = col[j] = true;}}}//再次遍历,只要有一个标记为true,则置为0for(int i = 0;i < m;i++){for(int j = 0;j < n;j++){if(row[i] || col[j]){matrix[i][j] = 0;}}}}
}

方法二:使用两个标记变量
使用矩阵的第一列和第一行去代替方法一中的标记数组,但是第一行和第一列的数值也会因此而改变,所以使用两个标记变量来第一行和第一列中原本是否包含0

class Solution {public void setZeroes(int[][] matrix) {//用变量定义数组的行和列的长度,方便写代码int m = matrix.length;int n = matrix[0].length;//定义标记变量boolean firstRow = false;boolean firstCol = false;//对标记变量进行赋值for(int i = 0;i < m;i++){if(matrix[i][0] == 0){firstCol = true;}}for(int i = 0;i < n;i++){if(matrix[0][i] == 0){firstRow = true;}}for(int i = 1;i < m;i++){for(int j = 1;j < n;j++){if(matrix[i][j] == 0){matrix[i][0] = matrix[0][j] = 0;}}}for(int i = 1;i < m;i++){for(int j = 1;j < n;j++){if(matrix[i][0] == 0 || matrix[0][j] == 0){matrix[i][j] = 0;}}}//更新第一行第一列if(firstCol){for(int i = 0;i < m;i++){matrix[i][0] = 0;}}if(firstRow){for(int i = 0;i < n;i++){matrix[0][i] = 0;}}}
}

方法三:使用一个标记变量
第一列的第一个元素即可以标记第一行是否出现0。但为了防止每一列的第一个元素被提前更新,我们需要从最后一行开始,倒序地处理矩阵元素。

class Solution {public void setZeroes(int[][] matrix) {//用变量定义数组的行和列的长度,方便写代码int m = matrix.length;int n = matrix[0].length;//定义标记变量boolean firstColAndRow = false;//对标记变量进行赋值for(int i = 0; i < m; i++){if(matrix[i][0] == 0){firstColAndRow = true;}for(int j = 1; j < n; j++){if(matrix[i][j] == 0){matrix[i][0] = matrix[0][j] = 0;}}}//倒序for(int i = m - 1; i >= 0; i--){for(int j = 1; j < n; j++){if(matrix[i][0] == 0 || matrix[0][j] == 0){matrix[i][j] = 0;}}if(firstColAndRow){matrix[i][0] = 0;}}}
}
http://www.yayakq.cn/news/266507/

相关文章:

  • 100个最全的免费网站网站基本参数设置模块
  • 58网站建设的目的网站的seo如何设计
  • 网站建设电脑大多怎么办长沙软件开发
  • 团购机票网站建设网站数字化建设
  • 厦门市建设工程在哪备案网站计生网站生育文明建设
  • 杭州哪家网站建设好cad二次开发
  • 电子商务网站建设与维护考试网站运营 网站建设
  • 昌吉做网站需要多少钱企业网络搭建教程
  • 免费素材网站大全网站售后服务
  • 滁州市建设工程协会网站wordpress 文章评价插件
  • 建设规划许可证公示网站黑群晖wordpress建站
  • 有关网站建设的毕业设计企业邮箱是啥意思
  • 黑龙江省生产建设兵团知青网站做现货黄金网站
  • 建立外贸网站海南哪家公司做网站
  • 网站logo素材外贸网站域名用境内还是境外
  • 建设生鲜网站价格网站建设分为哪几个步骤
  • 设计师素材网站开发建婚恋网站需要多少钱
  • 大连网站制作的公司哪家好网站解封原因
  • 做微网站必须要有公众号吗互联网推广的方式
  • 左右翻网站模版商标注册证电子版查询
  • 民宿设计网站大全wordpress 防分析
  • 湖北网站优化公司单位建设网站硬件
  • 网站开发从零到上线中国万网官方网站
  • 娄底企业网站建设公司信息流优化师怎么入行
  • 安徽龙山建设网站常用于网站推广的营销手段是
  • 建一个网站大概需要多长时间给被k的网站做友链
  • 会网站建设怎样赚钱唐山网站制作企业
  • 可以转app的网站怎么做的个人主机做网站
  • linux国外网站吗网页设计特色及创意
  • 怎么填写网站icp备案wordpress 2016主题