当前位置:网站首页>Leetcode73. 矩阵置零
Leetcode73. 矩阵置零
2022-08-01 17:54:00 【Java全栈研发大联盟】
题目传送地址: https://leetcode.cn/problems/set-matrix-zeroes/
运行效率
代码如下:
class Solution {
public static void setZeroes(int[][] matrix) {
//先找出一个不存在于矩阵中的数, 到时候把横向和纵向的地方置为该数,最后等把矩阵中的0全都遍历完了以后,再把该数进行改成0
BitSet bitSet = new BitSet();
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[0].length; j++) {
if (matrix[i][j] <= 400 && matrix[i][j] >= 0) {
bitSet.set(matrix[i][j]);
}
}
}
int val = bitSet.nextClearBit(0);
for (int row = 0; row < matrix.length; row++) {
for (int col = 0; col < matrix[0].length; col++) {
if (matrix[row][col] == 0) {
fillVal(row, col, matrix, val);
}
}
}
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[0].length; j++) {
if (matrix[i][j] == val) {
matrix[i][j] = 0;
}
}
}
}
public static void fillVal(int row, int col, int[][] matrix, int val) {
//将该坐标的横向一条线上的都置为0, 除非遇到matrix里自带的0才截止
for (int i =0; i < matrix[0].length; i++) {
if (matrix[row][i] != 0) {
matrix[row][i] = val;
}
}
//将该坐标的纵向一条线上的都置为0, 除非遇到matrix里自带的0才截止
for (int j =0; j < matrix.length; j++) {
if (matrix[j][col] != 0) {
matrix[j][col] = val;
}
}
}
}
边栏推荐
猜你喜欢
随机推荐
B002 - Embedded Elderly Positioning Tracking Monitor
MySql 怎么查出符合条件的最新的数据行?
B011 - 基于51的多功能指纹智能锁
golang json returns null
加州大学|通过图抽象从不同的第三人称视频中进行逆强化学习
C语言:表达式求值详解
块级元素、行内元素、行内块元素
opencv real-time face detection
【Day_09 0427】 另类加法
深入分析类加载器
百度网盘下载速度提升100倍
C language theory--a solid foundation for the written test and interview
QLineEdit学习与使用
ROS2系列知识(5):【参数】如何管理?
EpiSci | Deep Reinforcement Learning for SoCs: Myth and Reality
SQL的索引详细介绍
【Day_11 0506】求最大连续bit数
MySQL 45 讲 | 09 普通索引和唯一索引,应该怎么选择?
【Day_11 0506】 最近公共祖先
成为优秀架构师必备技能:怎样才能画出让所有人赞不绝口的系统架构图?秘诀是什么?快来打开这篇文章看看吧!...