程序员面试金典(7):清除行列(python)
来源:互联网 发布:熊猫网络电视 编辑:程序博客网 时间:2024/05/17 01:43
程序员面试金典(7):清除行列(python)
题目描述
请编写一个算法,若N阶方阵中某个元素为0,则将其所在的行与列清零。
给定一个N阶方阵int[][](C++中为vector>)mat和矩阵的阶数n,请返回完成操作后的int[][]方阵(C++中为vector>),保证n小于等于300,矩阵中的元素为int范围内。
测试样例:
[[1,2,3],[0,1,2],[0,0,1]]返回:[[0,0,3],[0,0,0],[0,0,0]]
题目陷阱:
一看到这个题目可能会想到遍历整个矩阵,只要发现值为0,就将其所在行和与列全部清零。这个是个错误的思想,当清零的时候,0元素覆盖了还没有遍历到的元素,所以只有数组有一个零,最后就导致整个数组全为0。
#!/usr/bin/env python# -*- coding: utf-8 -*-# Created by xuehz on 2017/8/21class Clearer: def clearZero(self, mat, n): # write code here rowArray = [[]]*n columnArray = [[]]*n #新建有一个同样大小矩阵标记零元素出现的位置 for i in xrange(n): for j in xrange(n): if mat[i][j] == 0: rowArray[i] = True columnArray[j] = True for i in xrange(n): for j in xrange(n): if rowArray[i] or columnArray[j]: mat[i][j] = 0 return matif __name__ == '__main__': mat = [[1,2,3],[0,1,2],[0,0,1]] print mat C = Clearer() print C.clearZero(mat,3)
阅读全文
0 0
- 程序员面试金典(7):清除行列(python)
- 《程序员面试金典》清除行列
- 清除行列(程序员面试金典)
- 程序员面试金典 1.7 清除行列
- 程序员面试金典题解 清除行列
- 【程序员面试金典】清除行列
- 程序员面试金典-7.清除行列
- 程序员面试金典——清除行列
- 《Cracking the Coding Interview程序员面试金典》----清除行列
- 程序员面试金典:数组--像素翻转、清除行列
- 程序员面试金典第一章:数组与字符串(7)清除行列
- [程序员面试宝典]清除行列
- 清除行列之程序员面试经典
- 清除行列
- 清除行列
- 清除行列
- 清除行列
- 清除行列
- App之间的通信方式
- PHP多维数组按指定键名排序
- 大数据挑战赛历程与总结随笔
- 使用scatter与random.normal函数绘制散点图简单实例
- Java 上传 多张图片
- 程序员面试金典(7):清除行列(python)
- 【贪心算法(一)】贪心算法基础
- 3.S5PV210串口通信详解(一)
- 机器学习:kNN近邻算法
- 子控件与父控件的焦点处理
- C Primer Plus 第十二章:储存类别,链接和内存管理
- 持久化,java帝国反击战
- Android判断国家以及系统当前的语言
- laravel各种路径的获取方法