零矩阵

news2024/11/17 10:05:32

暴力解法:先全部检索,定位0所在的位置, 记录到新的数组

                  数组的行列分别进行去重

                  数组中记录的行列赋值为零

如果直接修改,在行被修改之后,修改列时会因为行已经被修改产生影响

import org.junit.Test;

import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.List;

public class ZeroMatrix {
    @Test
    public void test1() {
        int[][] arr = new int[][]{{1, 2, 3}, {4, 5, 0}, {7, 8, 9}};
        ZeroMatrix.solution(arr);
        for (int[] l : arr) {
            for (int r : l) {
                System.out.print(r + " ");
            }
            System.out.println();
        }
    }

    public static void solution(int[][] arr) {
        List<Integer> listRow = new ArrayList<>();//记录存在零的行
        List<Integer> listColumn = new ArrayList<>();//记录存在零的列
        //遍历,记录零位置的行与列
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[0].length; j++) {
                if(arr[i][j] == 0){
                    listRow.add(i);
                    listColumn.add(j);
                }
            }
        }

        //去重
        LinkedHashSet<Integer> hashSetRow = new LinkedHashSet<>(listRow);
        LinkedHashSet<Integer> hashSetColumn = new LinkedHashSet<>(listColumn);

        int k = 0,l = 0;
        for (int i = 0; i < arr.length; i++) {
            if(hashSetRow.contains(i)){//此时的i为存在零的行
                while(k < arr[0].length){
                    arr[i][k++] = 0;//行赋值为零
                }

            }else {
                for (int j = 0; j < arr[0].length; j++) {
                    if (hashSetColumn.contains(j)){//此时的j为存在零的列
                        while(l < arr.length){
                            arr[l++][j] = 0;//列赋值为零
                        }
                    }
                }
            }
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/734476.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

tensorboard命令行使用方法

第一步&#xff1a;进入虚拟环境 conda activate 虚拟环境名称 第二步&#xff1a; tensorboard --logdir绝对地址 第三步&#xff1a;在浏览器输入提供的网址

day03 重新学python——python函数

文章目录 一、python函数1.函数介绍2.函数的定义3.函数的参数4.函数的返回值5.函数的说明文档6.函数的嵌套调用7.变量的作用域8.综合案例 一、python函数 1.函数介绍 函数&#xff1a;即组织好的、课重复利用&#xff0c;用来实现特殊功能的代码段&#xff0c;这样可以提高代码…

生产者消费者

前言 生产者消费者模式属于一种经典的多线程协作的模式&#xff0c;弄清生产者消费者问题能够让我们对于多线程编程有更深刻的理解&#xff0c;下面&#xff0c;为大家分享一个生产者消费者的案例。 一、案例描述 这里以快递为例&#xff0c;假设有一个快递柜&#xff0c;用来…

蚂蚁链发布零知识证明技术架构 可满足数据“隐私保护”、“可验证”双要求

7 月 8 日&#xff0c;在 2023WAIC 全球区块链产业高峰论坛上&#xff0c;蚂蚁链宣布隐私协作平台 AntChain FAIR 进行全新架构升级&#xff0c;引入零知识证明&#xff08;ZKP&#xff09;为核心的可验证计算技术&#xff0c;从可信数据流转拓展到计算过程、数据属性以及身份的…

Vmware环境下的CentOS安装

CentOS7 下载安装 因为 centos 是安装在 VMware 上面的&#xff0c;所以需要提前安装 VMware centos 下载 网址&#xff1a;http://isoredirect.centos.org/centos/7/isos/x86_64/ 镜像源&#xff1a;http://centos.mirror.rafal.ca/7.9.2009/isos/x86_64/ 安装 centos 创建…

哪些软件分析工具需要使用到pdb符号文件?

目录 1、什么是pdb文件&#xff1f;pdb文件有哪些用途&#xff1f; 2、pdb文件的时间戳与pdb文件名称 3、常用软件分析工具有哪些&#xff1f; 4、使用Windbg调试器查看函数调用堆栈时需要加载pdb文件 4.1、给Windbg设置pdb文件路径 4.2、为什么要设置系统库pdb文件下载服…

深度剖析线上应用节点流量隔离技术

作者&#xff1a;谢文欣&#xff08;风敬&#xff09; 为什么要做流量隔离 源于一个 EDAS 客户遇到的棘手情况&#xff1a;他们线上的一个 Pod CPU 指标异常&#xff0c;为了进一步诊断问题&#xff0c;客户希望在不重建此 Pod 的情况下保留现场&#xff0c;但诊断期间流量还…

Element-UI 实现动态增加多个输入框并校验

文章目录 前言实现通过按钮动态增加表单并验证必填实现动态多个输入框为行内模式&#xff0c;其它为行外模式 前言 在做复杂的动态表单&#xff0c;实现业务动态变动&#xff0c;比如有一条需要动态添加的el-form-item中包含了多个输入框&#xff0c;并实现表单验证&#xff0…

非线性激活函数

目录 理论介绍 常见的激活函数 A. sigmoid函数 B. tanh C.ReLu Leaky Relu 函数 Parametric ReLU (PReLU) Exponential Linear Unit (ELU) 实验结果及分析 理论介绍 在神经网络的计算中&#xff0c;无非就是矩阵相乘&#xff0c;输入的是线性&#xff0c;不论输出层有…

如何修复ssh漏洞进行版本升级

目录 一、ssh低版本漏洞信息 OpenSSH GSSAPI 处理远端代码执行漏洞 OpenSSH GSSAPI认证终止信息泄露漏洞 OpenSSH X连接会话劫持漏洞 二、升级ssh版本进行修复漏洞 第一步 安装Telnet服务 第二步 重启服务 第三步 安装依赖环境 第四步 备份ssh老版本文件 第五步 导入…

【JavaEE进阶】Spring 创建与使用

Spring 创建与使用 1&#xff0c;Spring项目的创建 使用Maven方式来创建一个Spring项目&#xff0c;创建Spring项目和Servlet类似&#xff0c;总共分为以下3步&#xff1a; 创建一个普通Maven项目添加 Spring 框架⽀持&#xff08;spring-context、spring-beans&#xff09;添…

UE特效案例 —— 魔法翅膀

一&#xff0c;环境配置 创建默认地形Landscape&#xff0c;如给地形上材质需确定比例&#xff1b;添加环境主光源DirectionalLight&#xff0c;设置相应的强度和颜色&#xff1b;PostProcessVolume设置曝光&#xff0c;设置Min/Max Brightness为1&#xff1b; 与关闭Game Sett…

【二分查找】35. 搜索插入位置

35. 搜索插入位置 解题思路 使用二分查找算法当找到元素之后直接返回位置即可当没找到元素&#xff0c;将该元素插入到left位置即可 class Solution {public int searchInsert(int[] nums, int target) {// 二分查找int left 0;int right nums.length - 1;while(left < …

数组扁平化flat方法的多种实现

flat() let arr [[1],[2, 3],[4, 5, 6, [7, 8, [9, 10, [11]]]],12 ];// 参数指要提取嵌套数组的结构深度&#xff0c;默认值为 1。 // Infinity 指递归嵌套的所有层级。 let flattedArr arr.flat(Infinity); console.log(flattedArr);执行效果&#xff1a; toString() 注意…

FreeRTOS ~(六)信号量 ~ (2/3)信号量解决互斥缺陷

前情提要 FreeRTOS ~&#xff08;四&#xff09;同步互斥与通信 ~ &#xff08;2/3&#xff09;互斥的缺陷 FreeRTOS ~&#xff08;五&#xff09;队列的常规使用 ~ &#xff08;2/5&#xff09;队列解决互斥缺陷 举例子说明&#xff1a;利用信号量解决前述的"互斥的缺陷&…

SQL Server数据库 -- 表的高级查询

文章目录 一、子查询 嵌套子查询相关子查询二、查询运算 并运算union交运算intersect差运算except三、函数的使用 if语句while语句case语句四、总结 前言 高级子查询是对查询更灵活的运用&#xff0c;学会了高级查询将对数据库使用有很大的帮助。 一、子查询 1、子查询简介 在…

MATLAB画等深度构造图

clc;clear;close all; data xlsread(J_UNCONFORMITY等深度.xlsx); x data(:,1) xmax max(x); xmin min(x); y data(:,2) ymax max(y); ymin min(y); z data(:,3); N 45…

天天刷题-->LeetCode(两数相加)

个人名片&#xff1a; &#x1f405;作者简介&#xff1a;一名大二在校生&#xff0c;热爱生活&#xff0c;爱好敲码&#xff01; \ &#x1f485;个人主页 &#x1f947;&#xff1a;holy-wangle ➡系列内容&#xff1a; &#x1f5bc;️ tkinter前端窗口界面创建与优化 &…

MachineLearningWu_7+8_LogisticRegression/Classification

x.1 logistic regression 对于诸如分辨细胞是恶性肿瘤细胞与否的类似分类问题&#xff0c;我们使用Linear Regression的模型并不合适&#xff0c;所以引入Logistic Regression的模型&#xff0c;并绘制decision boundary&#xff0c;如下&#xff0c; Classification的最后一层…