0
点赞
收藏
分享

微信扫一扫

LeetCode Day7【数据结构】有效的数独,矩阵置零

Gascognya 2022-01-24 阅读 57

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;
            }
        }  
    }
}
举报

相关推荐

0 条评论