LeetCode Day7【数据结构】有效的数独,矩阵置零
36 Valid Sudoku有效的数独
题目
暴力循环找重复,按照题目要求的三个条件一个个找,代码:
class Solution {
public boolean isValidSudoku(char[][] board) {
for(int i = 0; i < 9; i++){
for(int j = 0; j < 9; j++){
if(board[i][j] == '.')continue;
for(int k = 8; k > j; k--)
if(board[i][j] == board[i][k])
return false;
for(int k = 8; k > i; k--)
if(board[i][j] == board[k][j])
return false;
for(int k = i + 1; k % 3 != 0; k ++){
for(int h = j / 3 * 3;h < j / 3 * 3 + 3; h ++ )
if(board[i][j] == board[k][h])
return false;
}
}
}
return true;
}
}
- 执行用时:
1 ms, 在所有 Java 提交中击败了100.00%的用户 - 内存消耗:
38.1 MB, 在所有 Java 提交中击败了90.89%的用户 - 通过测试用例:
507 / 507
暴力for循环时间没超可能是因为数据规模小吧。
- 此方法详细题解
73 Set Matrix Zeroes矩阵置零
题目
方法:
遍历两次,第一次记录哪些行哪些列有0,第二次置零。
代码很易懂:
class Solution {
public void setZeroes(int[][] matrix) {
Set<Integer> row_zero = new HashSet<>();
Set<Integer> col_zero = new HashSet<>();
int row = matrix.length;
int col = matrix[0].length;
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
if (matrix[i][j] == 0) {
row_zero.add(i);
col_zero.add(j);
}
}
}
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
if (row_zero.contains(i) || col_zero.contains(j)) matrix[i][j] = 0;
}
}
}
}