問題
給定乙個 m x n 的矩陣,如果乙個元素為 0 ,則將其所在行和列的所有元素都設為 0 。請使用 原地 演算法。
高階:
乙個直觀的解決方案是使用 o(mn) 的額外空間,但這並不是乙個好的解決方案。
乙個簡單的改進方案是使用 o(m + n) 的額外空間,但這仍然不是最好的解決方案。
你能想出乙個僅使用常量空間的解決方案嗎?
示例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]]
問題分析:
該問題需要將矩陣**現的0的行和列全部置為0,然後輸出。最先開始考慮到的是兩次遍歷陣列,第一次遍歷將陣列中為0的地方標記,第二次遍歷則將標記處的行和列全部置為0即可,但是這樣會造成浪費空間,不符合要求。
提公升演算法的空間複雜度不難,可以將第一行和第一列單獨的進行分析,並且設立標誌,先檢視第一行和第一列的是否有0出現,有的話將標誌置位true,然後**中首先分析除過第一行和第一列的元素是否有0出現,若有0出現,則將對應的元素的首行和首列元素置0,通俗理解就是相當關於計數器,最後在來分析第一列和第一行的元素中是否有為0。
**描述**
**:
class
solution
for(
int i=
0;i)for
(int i=
1;ifor(
int i=
1;iif(sign_x==
true)}
if(sign_y==
true)}}};
每天記錄一點點,有錯誤麻煩大神批評指正!!! 演算法基礎 陣列操作 矩陣置零
給定乙個 m x n 的矩陣,如果乙個元素為 0,則將其所在行和列的所有元素都設為 0。請使用原地演算法。示例 1 輸入 1,1,1 1,0,1 1,1,1 輸出 1,0,1 0,0,0 1,0,1 示例 2 輸入 0,1,2,0 3,4,5,2 1,3,1,5 輸出 0,0,0,0 0,4,5,0...
簡單的矩陣優化演算法
對於矩陣乘法 c a b 通常的做法是將矩陣進行分塊相乘,如下圖所示 從上圖可以看出這種分塊相乘總共用了 8 次乘法,當然對於子矩陣相乘 如 a0 b0 還可以繼續遞迴使用分塊相乘。對於中小矩陣來說,很適合使用這種分塊乘法,但是對於大矩陣來說,遞迴的次數較多,如果能減少每次分塊乘法的次數,那麼效能將...
LeetCode演算法題73 矩陣置零解析
給定乙個 m x n 的矩陣,如果乙個元素為 0,則將其所在行和列的所有元素都設為 0。請使用原地演算法。示例 1 輸入 1,1,1 1,0,1 1,1,1 輸出 1,0,1 0,0,0 1,0,1 示例 2 輸入 0,1,2,0 3,4,5,2 1,3,1,5 輸出 0,0,0,0 0,4,5,0...