給定乙個 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],
[0,3,1,0]
]
高階:
乙個直接的解決方案是使用 o(mn) 的額外空間,但這並不是乙個好的解決方案。
乙個簡單的改進方案是使用 o(m + n) 的額外空間,但這仍然不是最好的解決方案。
你能想出乙個常數空間的解決方案嗎?
o(mn)的額外空間辦法是重開乙個陣列進行儲存,這裡不做贅述
我自己想到的是o(m+n)的方式,開兩個陣列分別存為0的行和列。
void setzeroes(vector>& matrix)
} }set::iterator rit = row.begin();
while(rit!=row.end())
rit++;
} set::iterator cit = col.begin();
while (cit != col.end())
cit++;
}}
最好的辦法是常數空間,也就是用第一行存為0的列,第一列存為0的行,至於第一行和第一列是否為0,則需要firstrow和firstcol來儲存了。
void setzeroes(vector>& matrix)
} for (int i = 0; i < matrix.size(); i++)
} for (int i = 0; i < matrix[0].size(); i++)
} //然後處理第一行和第一列
if (firstrow == 0)
if (firstcol == 0)
}
中級演算法之陣列和字串 三數之和
給定乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c 使得 a b c 0 找出所有滿足條件且不重複的三元組。注意 答案中不可以包含重複的三元組。示例 給定陣列 nums 1,0,1,2,1,4 滿足要求的三元組集合為 1,0,1 1,1,2 思路 首先進行排序,...
演算法基礎 陣列操作 矩陣置零
給定乙個 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...
中級演算法之陣列和字串 無重複字元的最長子串
給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。示例 1 輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。示例 2 輸入 bbbbb 輸出 1 解釋 因為無重複字元的最長子串是 b 所以其長度為 1。示例 3 輸入 pwwkew 輸出 3 ...