73. 矩阵置零
class Solution {public void setZeroes(int[][] matrix) {int line = matrix.length;int col = matrix[0].length;List<Integer> changeLines = new ArrayList<Integer>();List<Integer> changeCols = new ArrayList<Integer>();for(int i = 0; i < line; i++) {for(int j = 0; j < col; j++) {if (matrix[i][j] == 0) {changeLines.add(i);changeCols.add(j);}}}
for(int i = 0; i < line; i++) {if (changeLines.contains(i)) {Arrays.fill(matrix[i], 0);}for(int j = 0; j < changeCols.size(); j++) {matrix[i][changeCols.get(j)] = 0;}}return;}
}
54. 螺旋矩阵
class Solution {private static final int[][] DIRS = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};public List<Integer> spiralOrder(int[][] matrix) {int line = matrix.length;int col = matrix[0].length;int size = line * col;List<Integer> ans = new ArrayList<>(line * col);int i = 0; int j = -1;for(int di = 0; ans.size() < size; di = (di + 1) % 4) {for(int k = 0; k < col; k++) {i += DIRS[di][0];j += DIRS[di][1];ans.add(matrix[i][j]);}int tmp = col;col = line - 1;line = tmp;}return ans;}
}
48. 旋转图像
class Solution {public void rotate(int[][] matrix) {int lines = matrix.length;int cols = matrix[0].length;int[][] copy = new int[lines][cols];for(int i = 0; i < lines; i++) {for(int j = 0; j < cols; j++) {copy[i][j] = matrix[i][j];}}for(int i = 0; i < lines; i++) {for(int j = 0; j < cols; j++) {matrix[j][cols - i - 1] = copy[i][j];}}return;}
}
240. 搜索二维矩阵Ⅱ

class Solution {public boolean searchMatrix(int[][] matrix, int target) {int m = matrix.length;int n = matrix[0].length;for(int i = 0; i < m; i++) {if (matrix[i][n - 1] < target) {continue;} else if (matrix[i][n - 1] == target) {return true;}for(int j = n - 1; j >= 0; j--) {if (matrix[i][j] > target) {continue;} else if (matrix[i][j] == target) {return true;} else {break;}}}return false;}
}