2021/03/21 每日一題 矩陣置零

LeetCode上矩陣置零,中等難度,記錄下解題思路

給一個二維數(shù)組,在數(shù)組中出現(xiàn)0的位置的行列都要設(shè)置為0,之后返回設(shè)置后的數(shù)組

思路是

  1. 第一遍循環(huán)數(shù)組,記錄下0元素的行列,分別保存在兩個數(shù)組中
  2. 第二遍遍歷,將兩個數(shù)組對應(yīng)行列的元素全部轉(zhuǎn)換為0

有一點小優(yōu)化是,JavaScript提供set數(shù)據(jù)結(jié)構(gòu),能夠自動去重,這樣能夠保證保存的行列數(shù)據(jù)不重復(fù),減少計算量

var setZeroes = function(matrix) {
  // 保存二維數(shù)組長度
  let m = matrix.length
  let n = matrix[0].length
  if (!m || !n) return matrix
  // 設(shè)置兩個set用于保存行列
  let col = new Set()
  let row = new Set()
  // 第一次循環(huán)
  for(let i = 0; i < m; i++){
    for(let j = 0; j < n; j++){
      // 如果當前元素為0,保存行列
      if (matrix[i][j] === 0){
        row.add(i)
        col.add(j)
      }
    }
  }
  // 第二次循環(huán),循環(huán)整個數(shù)組
  for(let i = 0; i < m; i++){
    for(let j = 0; j < n; j++){
      // 如果這行或者這列出現(xiàn)在set中,那么就要設(shè)為0
      if (row.has(i) || col.has(j)) {
        matrix[i][j] = 0
      }
    }
  }
  return matrix
};
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容