AI大模型时代的职业机遇与技术实践指南
2026/7/22 4:33:17
适用:有效数独、矩阵置零、生命游戏
int m = matrix.length; // m = 总行数,i:行下标(上下) int n = matrix[0].length; // n = 总列数,j:列下标(左右) matrix[i][j]; // i先行,j后列 // 从上到下遍历每一行 for(int i = 0; i < m; i++){ // 从左到右遍历一行内每一列 for(int j = 0; j < n; j++){ // 操作 matrix[i][j] } }// 矩阵置零示范思路 boolean[] rowFlag = new boolean[m]; boolean[] colFlag = new boolean[n]; // 第一轮:只标记,不改原矩阵 for(i,j){ if(matrix[i][j]==0){ rowFlag[i]=true; colFlag[j]=true; } } // 第二轮:依据标记统一修改 for(i,j){ if(rowFlag[i] || colFlag[j]) matrix[i][j]=0; }核心:用数组 / Set 充当哈希表,记录「行、列、指定区域」出现过哪些数字 套路:
boolean[][] rowHas = new boolean[9][9]; boolean[][] colHas = new boolean[9][9]; boolean[][][] boxHas = new boolean[3][3][9]; for(int i=0;i<9;i++){ for(int j=0;j<9;j++){ char c = board[i][j]; if(c == '.') continue; int x = c - '1'; // i/3 j/3 定位3×3小九宫 if(rowHas[i][x] || colHas[j][x] || boxHas[i/3][j/3][x]){ return false; } rowHas[i][x] = colHas[j][x] = boxHas[i/3][j/3][x] = true; } }