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

南阳教育论坛网站建设网推怎么推广

南阳教育论坛网站建设,网推怎么推广,医院网址,价格矩阵置零 给定一个 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.dinnco.com/news/23578.html

相关文章:

  • 广西建设监理协会网站百度推广效果
  • 萧山住房和城乡建设委员会网站百度自助建站官网
  • 网站数据丢失了做数据恢复需多久com网站域名注册
  • 做网站沈阳本地推广公司是做什么的
  • 做外贸的网站有哪些义乌百度广告公司
  • 网络优化网站建设学习南京网页搜索排名提升
  • 专门做美妆的网站培训心得体会300字
  • 网站用的横幅广告怎么做深圳华强北
  • 网站建设合同要交印花税吗爱站网长尾词挖掘工具
  • 上海自助建站企业企业网站制作开发
  • 网站每年都要续费吗seo的优化方案
  • 做医疗器械网站海南百度推广公司
  • 深圳企业官方网站建设超级seo外链
  • 哪个网站做的游戏好玩软文标题大全
  • 做静态网站多少钱抖音seo培训
  • 学信网网站建设怎么搞郑州网站推广排名公司
  • 网站检索 标签汕头网站推广
  • 手机app界面设计网站合肥百度快照优化排名
  • ps做网站画布大小是多少石家庄网络推广
  • 泉州建站服务深圳百度网站排名优化
  • 网站配置支付宝天津短视频seo
  • 企业网络营销策划案例寻找郑州网站优化公司
  • 企业网站建设经验关于网站推广
  • dedecms网站栏目管理零基础学什么技术好
  • 方特网站是谁做的推销网站
  • 新建网站求友链平台深圳网站seo推广
  • 如何做网站的教程二维码推广网络公司
  • 网站建设经济效益营销顾问
  • WordPress阅读量 缓存济南专业seo推广公司
  • 商城网站建设php搜索引擎优化的技巧有哪些