中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

南陽網(wǎng)站建設公司湖南官網(wǎng)網(wǎng)站推廣軟件

南陽網(wǎng)站建設公司,湖南官網(wǎng)網(wǎng)站推廣軟件,wordpress酷播,聚名網(wǎng)app下載從0開始的秋招刷題路,記錄下所刷每道題的題解,幫助自己回顧總結(jié) 73. 矩陣置零 給定一個 m x n 的矩陣,如果一個元素為 0 ,則將其所在行和列的所有元素都設為 0 。請使用 原地 算法。 示例 1: 輸入:mat…

從0開始的秋招刷題路,記錄下所刷每道題的題解,幫助自己回顧總結(jié)

73. 矩陣置零

給定一個 m x n 的矩陣,如果一個元素為 0 ,則將其所在行和列的所有元素都設為 0 。請使用 原地 算法。

示例 1:
在這里插入圖片描述

輸入:matrix = [[1,1,1],[1,0,1],[1,1,1]]
輸出:[[1,0,1],[0,0,0],[1,0,1]]

示例 2:
在這里插入圖片描述

輸入:matrix = [[0,1,2,0],[3,4,5,2],[1,3,1,5]]
輸出:[[0,0,0,0],[0,4,5,0],[0,3,1,0]]

提示:
m == matrix.length
n == matrix[0].length
1 <= m, n <= 200
?231-2^31?231 <= matrix[i][j] <= 231?12^31 - 1231?1

進階:
一個直觀的解決方案是使用 O(mn) 的額外空間,但這并不是一個好的解決方案。
一個簡單的改進方案是使用 O(m + n) 的額外空間,但這仍然不是最好的解決方案。
你能想出一個僅使用常量空間的解決方案嗎?

方法一
思路:用兩個set分別記錄需要置0的行和需要置0的列。第一次遍歷矩陣時,若發(fā)現(xiàn)一個元素為0,則將其行和列值分別加入到兩個set中。第二次遍歷矩陣時,將行set中的行全部置0,將列set中的列全部置0。

public void setZeroes(int[][] matrix) {if(matrix == null || matrix.length == 0)return;int m = matrix.length, n = matrix[0].length;Set<Integer> row = new HashSet<Integer>();Set<Integer> col = new HashSet<Integer>();for(int i = 0; i < m; i++){for(int j = 0; j < n; j++){if(matrix[i][j] == 0){row.add(i);col.add(j);}}}for(int i : row){for(int j = 0; j < n; j++)matrix[i][j] = 0;}for(int j : col){for(int i = 0; i < m; i++)matrix[i][j] = 0;}
}

時間復雜度:O(m×n)
空間復雜度:O(m+n) 最壞情況是矩陣中全部元素為0的情況,這時兩個set的大小分別為m和n。

方法二
思路:不用額外空間,讓首行和首列記錄某列和某行是否有0

算法步驟:
首先用兩個布爾類型變量firstRow和firstCol分別記錄矩陣的首行和首列中是否有0
遍歷除首行和首列外的所有元素,若元素matrix[i][j]為0,則將它對應的首行和首列中的元素matrix[i][0]和matrix[0][j]置為0,意為此行和列后續(xù)需要被置0(由于修改后首行和首列是否有0的信息會被破壞掉,因此需要有之前的步驟一)
遍歷首行和首列,若發(fā)現(xiàn)首行中有元素為0,則將此元素所處的列全部置0,若發(fā)現(xiàn)首列中有元素為0,則將此元素所處的行全部置0。
根據(jù)步驟一的布爾類型變量firstRow和firstCol來判斷首行和首列是否需要被置0。

public void setZeroes(int[][] matrix) {if(matrix == null || matrix.length == 0)return;int m = matrix.length, n = matrix[0].length;boolean firstRow = false, firstCol = false;//步驟一for(int i = 0; i < m; i++){if(matrix[i][0] == 0)firstCol = true;}for(int j = 0; j < n; j++){if(matrix[0][j] == 0)firstRow = true;}//步驟二for(int i = 1; i < m; i++){for(int j = 1; j < n; j++){if(matrix[i][j] == 0){matrix[i][0] = 0;matrix[0][j] = 0;}}}//步驟三for(int i = 1; i < m; i++){if(matrix[i][0] == 0){for(int j = 0; j < n; j++)matrix[i][j] = 0;}}for(int j = 1; j < n; j++){if(matrix[0][j] == 0){for(int i = 0; i < m; i++)matrix[i][j] = 0;}}//步驟四if(firstRow){for(int j = 0; j < n; j++)matrix[0][j] = 0;}if(firstCol){for(int i = 0; i < m; i++)matrix[i][0] = 0;}
}

時間復雜度:O(m×n)
空間復雜度:O(1)

http://www.risenshineclean.com/news/29252.html

相關(guān)文章:

  • 網(wǎng)站驗證碼怎么做steam交易鏈接在哪
  • 溧陽做網(wǎng)站哪家好零基礎學什么技術(shù)好
  • html5畢業(yè)設計題目大全福州百度推廣排名優(yōu)化
  • 信用門戶網(wǎng)站建設專家評價免費網(wǎng)站收錄網(wǎng)站推廣
  • 一個域名權(quán)重3如果做網(wǎng)站的話權(quán)重會降為0嗎百度熱度榜搜索趨勢
  • 網(wǎng)站建設平臺策劃電腦優(yōu)化是什么意思
  • 陜西省建設銀行網(wǎng)站6seo如何優(yōu)化
  • ppt歡迎頁面模板網(wǎng)絡營銷中的seo與sem
  • 不在百度做推廣他會把你的網(wǎng)站排名弄掉怎么可以讓百度快速收錄視頻
  • 昆明網(wǎng)站建設-中國互聯(lián)精準客戶數(shù)據(jù)采集軟件
  • 小學網(wǎng)站源碼php個人在線做網(wǎng)站免費
  • 做網(wǎng)站話掙錢嗎google下載官網(wǎng)
  • 武平縣網(wǎng)站建設搜索引擎競價廣告
  • seo優(yōu)化價格seo1搬到哪里去了
  • 樂清網(wǎng)站設計公司哪家好百度 營銷中心
  • 哈爾濱自助建站模板網(wǎng)站推廣軟件
  • 萊蕪金點子信息港最新招聘信息港南寧seo優(yōu)化公司
  • 山東濟南網(wǎng)站建設公司深圳公司網(wǎng)絡推廣該怎么做
  • 酒類網(wǎng)站建設方案百度推廣客戶端手機版
  • 網(wǎng)站推廣計劃怎么寫青島 google seo
  • 唐山網(wǎng)站建設哪家優(yōu)惠2000元代理微信朋友圈廣告
  • 單頁面網(wǎng)站制作視頻線上推廣方案怎么寫
  • 投訴做網(wǎng)站的電話長沙seo 優(yōu)化選智投未來no1
  • 網(wǎng)站建設與管理課程代碼寧波seo關(guān)鍵詞優(yōu)化方法
  • 安化建設局網(wǎng)站微信營銷策略有哪些
  • 知名電子商務網(wǎng)站英雄聯(lián)盟世界排名
  • 帶視頻的網(wǎng)站模板免費數(shù)據(jù)分析網(wǎng)站
  • 安全達標建設網(wǎng)站鄭州計算機培訓機構(gòu)哪個最好
  • 燕郊建設局網(wǎng)站建網(wǎng)站專業(yè)
  • 展示型網(wǎng)站舉例seo專員崗位職責