Set Matrix Zeros

解題報告: 因為不要用extra space 所以運行時間可能有點高,主要是兩個方法, 一個是找出這些零的位置,之后用第二個方法將它的縱和橫都改成零。

public class Solution {? ? public void setZeroes(int[][] matrix) {? ? ? ? if(matrix == null || matrix.length == 0|| matrix[0].length == 0) return;? ? ? ? int m = matrix.length;? ? ? ? int n = matrix[0].length;? ? ? ? //find which row and which column? ? ? ? HashMap> map = new HashMap<>();? ? ? ? ? ? ? ? for(int i = 0; i < m; i++){? ? ? ? ? ? for(int j = 0; j < n; j++){? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if(matrix[i][j] == 0){? ? ? ? ? ? ? ? ? if(!map.containsKey(i)){? ? ? ? ? ? ? ? ? ? ? ArrayListtemp = new ArrayList<>();

temp.add(j);

map.put(i, temp);

}else{

map.get(i).add(j);

}

}

}

}

for(int i = 0; i < m;i++){

if(map.containsKey(i)){

for(Integer j: map.get(i)){

set(matrix, i, j);

}

}

}

return;

}

private void set(int[][] matrix, int i, int j){

//? if(i <= matrix.length || j <= matrix[0].length) return;

if(matrix == null || matrix.length == 0|| matrix[0].length == 0) return;

for(int k = 0; k < matrix[0].length; k++){

matrix[i][k] = 0;

}

for(int l = 0; l < matrix.length; l++){

matrix[l][j] = 0;

}

return;

}

}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 背景 一年多以前我在知乎上答了有關LeetCode的問題, 分享了一些自己做題目的經驗。 張土汪:刷leetcod...
    土汪閱讀 12,927評論 0 33
  • 丹丹,你好嗎?今天感覺如何? 整個大半天過去我都覺得還不錯,內心還沉浸在昨晚的安靜中內在愛心父母的...
    楊丹_cbc4閱讀 173評論 0 1
  • 春城的雨 很大的雨 悶熱籠罩下 煩悶的心 突然之間 仿佛攜席卷山河之勢 大雨! 傾盆而下 天地間一片蒼茫 只留耳邊...
    假如沒有冬天閱讀 243評論 0 0
  • 雨后的天空 澄澈的宛如嬰兒 也許你喜歡雨季 總是在某一刻 想念下雨的感覺 但雨過總會天晴 請不要留戀 陽光才能給你...
    木子不愛糖閱讀 155評論 0 0

友情鏈接更多精彩內容