網(wǎng)絡(luò)設(shè)備維護是做什么的合肥seo培訓(xùn)
題目
給定一個?
m x n
?的矩陣,如果一個元素為?0?,則將其所在行和列的所有元素都設(shè)為?0?。請使用?原地?算法。
解題思路
- 通過二層循環(huán)找出元素為0所在的行和列;
- 設(shè)置標(biāo)志位記錄當(dāng)前行是否存在元素為0的,設(shè)置列表存儲列為0的列;
- 在內(nèi)循環(huán)結(jié)束后對存在元素為0的行,填充為0;
- 遍歷列表,將列置為0;
代碼展示
class Solution {public void setZeroes(int[][] matrix) {Set<Integer> row = new HashSet<>();for (int i = 0; i < matrix.length; i++){boolean status = false;for (int j = 0; j < matrix[i].length; j++){if(matrix[i][j] == 0){status = true;row.add(j);}}if(status){Arrays.fill(matrix[i], 0);}}for (int num : row){for (int i = 0; i < matrix.length; i++){matrix[i][num] = 0;}}}
}