【Java】若MxN矩陣中某個元素為0, 則將其所在的行與列清零
若直接遍歷整個矩陣,發現為零的元素就直接將所在行與列清零,這樣做有一個陷阱,在讀取已被清零的行或列時,讀到的全是零,於是所在的行或列都變成零。
很快整個矩陣的所有元素都全部變為零了。
其實我們並不關心具體的行號和列號,反正整行和整列都會被清零,我們可以標記出零元素的行號和列號,根據這個來進行清零
public class setZeros { public void setZero(int[][] matrix) { boolean[] row = new boolean[matrix.length]; boolean[] column = new boolean[matrix[0].length]; for (int i = 0; i < matrix.length; i++) { for (int j = 0; j < matrix[0].length; j++) { if (matrix[i][j] == 0) { row[i] = true; column[j] = true; } } } for (int i = 0; i < matrix.length; i++) { for (int j = 0; j < matrix[0].length; j++) { if(row[i] || column[j]) { matrix[i][j] = 0; } } } } }
相關推薦
【Java】若MxN矩陣中某個元素為0, 則將其所在的行與列清零
若直接遍歷整個矩陣,發現為零的元素就直接將所在行與列清零,這樣做有一個陷阱,在讀取已被清零的行或列時,讀到的全是零,於是所在的行或列都變成零。 很快整個矩陣的所有元素都全部變為零了。 其實我們並不關心具體的行號和列號,反正整行和整列都會被清零,我們可以標記出零元素的行號和列
程式設計師面試金典1.7:若M*N矩陣中某個元素為0,則將其所在的行與列清零
1.7:編寫一個演算法,若M*N矩陣中某個元素為0,則將其所在的行與列清零。 咋一看,這個問題很簡單:直接遍歷整個矩陣,只要發現值為0的元素,就將其所在的行與列清零。不過這種方法有個缺陷:在讀取被清零的行與列時,讀到的盡是零,於是所在的行與所在的列都變成了0,很快,整個矩陣
若M*N階矩陣中某個元素為0,則將其所在的行與列清零
#include <bits/stdc++.h> using namespace std; struct Matrix { int data; int flag; }; int main() { struct Matrix a[10][10
給定一個m×n矩陣,如果一個元素為0,則將其整行和列的值設定為0.
本題源自LeetCode -------------------------------------------------- 思路1 遍歷整個陣列,遇到0 就把整行和整列不為0 的值置為* ,然後再次遍歷陣列把* 換為0 void setZeroes(vector&
【Java】接口開發中關於接受和發送json的相關範例
actual not span data private pla doby arr oms 接受json package com.suneee.scn.wms.web.rocketmq; import java.util.List; import net.sf.jso
【java】spring項目中 對entity進行本類間的克隆
tor mini cti false display des private rac 重寫 方法1: 【使用spring自帶BeanUtils實現克隆】 【要求:需要被克隆的類實現Cloneable接口並且重寫clone()方法】 》例子: 》》實體: package
【JAVA】在SpringBoot 專案中 利用maven 的generate外掛
使用maven 外掛 generate生成MyBatis相關檔案 在專案中增加 maven 依賴 - mybatis-spring-boot-starter - mysql-connector-java - mybatis-generator-maven-plugin 外掛 自
【JAVA】如何在Mac中安裝多個JDK?
1.安裝好全部JDK。 比如分別需要安裝1.7和1.8分別兩個; 2.修改bash_profile文件 安裝好後,啟動Ter修改Bash_profile文件;vim ~/.bash_profile代表原文修改,open ~/.bash_profile 是彈出
【Java】從內部類中訪問變數,需要宣告為final
Cannot refer to a non-final variable ‘result’ inside an inner class defined in a different method 從內部類中訪問變數’result’,需要宣告為final 這
【Java】刪除String陣列中的空值
private String[] replaceNull(String[] str){ //用StringBuffer來存放陣列中的非空元素,用“;”分隔 StringBuffer sb = new StringBuf
【轉】焦慮、渴望中掙紮的我們,如何定義成功和失敗?
cse 處理 很好 以及 國家 媒體 你我 slim 今天 我們總在一個人失敗的時候低估他,而在成功的時候又過於追捧,我們不吝對所謂的成功者送上無數鮮花和掌聲,而對所謂的失敗者則冷眼相待,嗤之以鼻。 英國作家阿蘭·德波頓(Alain de Botton),帶領我們檢視
【專家坐堂Q&A】在 petalinux-config 中選擇外部來源時,可將符號鏈路添加內核來源目錄樹
路徑 目錄樹 status 變量 不同的 work symlink stat 符號 問題描述 作為 petalinux-config 菜單的一部分,現在可以將 Linux 內核指定為外部來源。 如果選擇了該選項,可為內核來源目錄樹添加兩個符號鏈路。 這會帶來兩個問題: 1.
【Java】 大話資料結構(18) 排序演算法(5) (直接插入排序) 資料結構與演算法合集 資料結構與演算法合集
本文根據《大話資料結構》一書,實現了Java版的直接插入排序。 更多:資料結構與演算法合集 基本概念 直接插入排序思路:類似撲克牌的排序過程,從左到右依次遍歷,如果遇到一個數小於前一個數,則將該數插入到左邊所有比自己大的數之前,也就是說,將該數前面的所有更大的數字都後移一位,空出來的位置放入該數。
【java】定義一個字串(可以改進為鍵盤錄入)-Scanner
package test922; import java.util.Scanner; public class ScanerTest { private static Scanner sc; public static void main(final String[
【C】windows在**.exe中觸發了一個斷點,其原因可能是堆被損壞,解決方案,C記憶體申請釋放真TM麻煩,還是python好
寫程式過程中遇到malloc申請記憶體時出現錯誤,錯誤如下: 0x77C1E8FB (ntdll.dll) (Graph.exe 中)處有未經處理的異常: 0xC0000374: 堆已損壞。 (引數: 0x77C54270) 程式除錯過程中,在第一個
LeetCode-【陣列】-在排序陣列中查詢元素的第一個和最後一個位置
給定一個按照升序排列的整數陣列 nums,和一個目標值 target。找出給定目標值在陣列中的開始位置和結束位置。 你的演算法時間複雜度必須是 O(log n) 級別。 如果陣列中不存在目標值,返回
【java】把ArrayList的某一個元素放在最後demo
// 學生list List<Student> students = new ArrayList<>(); Student s1 = new Student("haha",12,"女"); Student
【java】Linux使用nohup命令啟動sh shell 指令碼,java程式無限迴圈啟動問題。解決方案
一·背景 專案使用spring boot 搭建。在Linux作業系統使用nohup命令啟動sh shell 指令碼,程式無限迴圈啟動,只要是 讓程式在後臺啟動 都會無限迴圈啟動(程式本來應該啟動完畢的,但是從日誌上看程式又再次啟動了一遍,無限迴圈,而且程式也無法正常訪問)
【Linux】使用xshell登陸時密碼框為灰色,無法輸入密碼
inline round spl log 退出 灰色 ref linu .cn 使用xshell登陸時,出現以上情況,那麽這到底值咋回事呢?經過查詢以後發現是服務器端設置問題,解決辦法如下:vi /etc/ssh/sshd_config接著保存退出,然後重啟sshd服務se
【C】為什麼靜態變數會被初始化為0,而自動變數卻不會被初始化?
把自動變數初始化為0的代價,將會增加函式呼叫的代價。C語言非常注重執行速度。 然而,把全域性變數區初始化為0,僅僅在程式啟動時候產生成本。這也許是這個問題的主要原因。 更精確的說,C++並不把靜態變數初始化為0,他們有自己的預設值,對於原生型別(native types)來