[google面试CTCI] 1-7.将矩阵中特定行、列置0
【字符串与数组】
Q:Write an algorithm such that if an element in an MxN matrix is 0, its entire row and 
column is set to 0.
题目:写一个算法,如果一个 MxN矩阵中某个元素为0,则将该元素所在的行、列都置为0.
解答:
方法一:错误的解法,思维误区。依次遍历二维数组(矩阵),遇到一个0,就将这个0所在的行和列全部置为0,咋看一下没问题,仔细一想不对啊,这样做后,很有可能操作完后,这个二维数组里就全变成0了。注意了啊,别进了思维误区。
方法二:开辟两个数组,分别用于标记某一行是否出现了0,如果出现0,将数组对应元素置为1。最后,再根据这两个数组中的标记,来设置矩阵中的元素。
void set_zeros(int **matrix,int m,int n){
char row[m];
char column[n];
memset(row,0,sizeof(row));
memset(column,0,sizeof(column));
int i,j;
for(i=0;i<m;++i){
    for(j=0;j<n;++j){
        if(matrix[i][j]==0){
             row[i]=1;
             column[j]=1;
    }
  }
}
for(i=0;i<m;++i){
    for(j=0;j<n;++j){
           if(row[i]==1 || column[j]==1)
              matrix[i][j]=0;
    }
}
}
作者:Viidiot 微信公众号:linux-code
Enjoy your life!
[google面试CTCI] 1-7.将矩阵中特定行、列置0的更多相关文章
- [google面试CTCI] 2-1.移除链表中重复元素
		
[链表] Q:Write code to remove duplicates from an unsorted linked list FOLLOW UP How would yo ...
 - python 判断矩阵中每行非零个数的方法
		
python 判断矩阵中每行非零个数的方法: # -*- coding: utf-8 -*- # @Time : 2018/5/17 15:05 # @Author : Sizer # @Site : ...
 - C语言:将3*5矩阵中第k列的元素左移到第0列,第k列以后的每列元素依次左移,原来左边的各列依次绕到右边。-在m行m列的二维数组中存放如下规律的数据,
		
//将3*5矩阵中第k列的元素左移到第0列,第k列以后的每列元素依次左移,原来左边的各列依次绕到右边. #include <stdio.h> #define M 3 #define N 5 ...
 - 将n阶方阵左下半三角中的元素值置0.
		
/*===================================== 将n阶方阵左下半三角中的元素值置0. 0<n<10. =========================== ...
 - [google面试CTCI] 1-5.替换字符串中特定字符
		
[字符串与数组] Q:Write a method to replace all spaces in a string with ‘%20’ 题目:写一个算法将一个字符串中的空格替换成%20 解答: ...
 - [google面试CTCI] 2-3 只给定链表中间节点指针,如何删除中间节点?
		
[链表] Q:Implement an algorithm to delete a node in the middle of a single linked list, given only acc ...
 - [google面试CTCI] 2-0.链表的创建
		
创建链表.往链表中插入数据.删除数据等操作,以单链表为例. 1.使用C语言创建一个链表: typedef struct nd{ int data; struct nd* next; } node; / ...
 - [google面试CTCI] 1-8.判断子字符串
		
[字符串与数组] Q:Assume you have a method isSubstring which checks if one word is a substring of another G ...
 - [google面试CTCI] 1-6.图像旋转问题
		
[字符串与数组] Q:Given an image represented by an NxN matrix, where each pixel in the image is 4 bytes, wr ...
 
随机推荐
- 【SSH三个框架】Hibernate第十篇基础:inverse属性具体解释
			
inverse后经常用于双向1-N在相关性.它也可以在使用N-N该协会,这里,例如用双1-N联想 或两个与各部门及工作人员,两javabean没有写. 首先,我们的员工看映射文件: <?xml ...
 - enq: SQ - contention
			
--每分钟操作 SQL> select sql_id, mi, count(mi) 2 from (select event, sql_id, to_char(sample_time ...
 - Java设计模式(八)观察者模式 迭代器模式
			
(十五)观察者模式 观察者模式,定义对象间一对多关系,一个对象状态发生改变,全部依赖于它的对象都收到通知而且自己主动更新,观察者与被观察者分开.比如邮件订阅.RSS订阅,假设有更新就会邮件通知你. i ...
 - git合并远端分支到本地分支的两种方式
			
作者:zhanhailiang 日期:2014-11-21 在使用版本号工具提交改动之前,都须要通过update先将本地代码更新到最新版本号.SVN通过svn update就能够实现,那么git怎样实 ...
 - GCD && Run Loops学习笔记
			
1.GCD 使用不同优先级的若干个队列乍听起来非常直接,只是,我们强烈建议,在绝大多数情况下使用默认的优先级队列就能够了.假设运行的任务须要訪问一些共享的资源,那么在不同优先级的队列中调度这些任务非常 ...
 - Delta3D 2.8版本号 预习
			
http://blog.csdn.net/zhuyingqingfen/article/details/38581453 看到官网今天的更新.发现即将公布的delta3d 2.8 版本号 做了非常大的 ...
 - ADS-B 雷达 显示终端5.8
			
改动日志 1 更新背景地图. 增加了全国范围内的国际航路.区域航路信息,全部航路信息来自网络及中国民用航空局公布的公开资料:航路採用深蓝色画笔绘制航路中包括有航路代码.高度及报告点信息.代码及报告点 ...
 - 初探Django Admin(一)
			
前面的文章记录了django项目的一些操作,插入数据部分是手动在shell中操作的,如果能有一个图形界面来管理我们的数据,那该多好~ Django已经想到大家会需要这个功能,通过简单的配置,就能使用d ...
 - atitit.ajax bp dwr 3.该票据安排使用的流量汇总 VO9o.....
			
atitit.ajax bp dwr 3.该票据安排使用的流量汇总 VO9o..... 1. 安装配置 1 1.1. 下载 dwr.jar 1M 1 1.2. 配置注解方式..web.xml 1 2 ...
 - OCP-1Z0-051-题目解析-第9题
			
9. Which statement is true regarding the INTERSECT operator? A. It ignores NULL values. B. Reversing ...