当前位置:网站首页>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;
}
}
}
}
边栏推荐
猜你喜欢
随机推荐
【Day_11 0506】 最近公共祖先
成都理工大学&电子科技大学|用于强化学习的域自适应状态表示对齐
缓存一致性MESI与内存屏障
直播系统聊天技术(八):vivo直播系统中IM消息模块的架构实践
ROS2系列知识(5):【参数】如何管理?
2022.08月--pushmall推贴共享电商更新与开发计划
Shell nl命令详解(显示行号、读取文件)
B002 - Embedded Elderly Positioning Tracking Monitor
素域和扩域
BITS Pilani|SAC-AP:基于 Soft Actor Critic 的深度强化学习用于警报优先级
解决MySQL插入不了中文数据问题
关于单应性矩阵的若干思考
网上开户佣金万一靠谱吗,网上开户安全吗
QT_QThread线程
【TDP加码福利】COS用户实践征文月,等你来投稿!!!
【R语言】对图片进行裁剪 图片批量裁剪
tooltip control
Solve the problem that MySQL cannot insert Chinese data
理财产品的月年化收益率怎么算?
【Day_09 0427】走方格的方案数