for (int i = 0; i < 9; i ++) { for (int j = 0; j < 9; j ++) { if (board[i][j] == '.') continue; int b = i / 3 * 3 + j / 3; int no = board[i][j] - '0' - 1; if (row[i][no] || col[j][no] || box[b][no]) returnfalse; row[i][no] = true; col[j][no] = true; box[b][no] = true; } }
returntrue; }
leetcode240 搜索二维矩阵 II
编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target
。该矩阵具有以下特性: 每行的元素从左到右升序排列。
每列的元素从上到下升序排列。
利用特性缩小检索范围
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
boolsearchMatrix(vector<vector<int>>& matrix, int target){ int m = matrix.size(), n = matrix[0].size(); int a = 0, b = 0; int i = m - 1, j = n - 1; while (i >= 0 && j >= 0) { if (matrix[i][j] < target) returnfalse; while (b < n - 1 && matrix[i][b] < target) { b ++; } if (matrix[i][b] == target) returntrue; i --; while (a < m - 1 && matrix[a][j] < target) { a ++; } if (matrix[a][j] == target) returntrue; j --; } returnfalse; }