矩阵
sjphiChina
代码是最为耐心、最能忍耐和最令人愉快的伙伴,在任何艰难困苦的时刻,它都不会抛弃你。
展开
-
Rotate Image
置换规律:参考点击打开链接 int offset = i - start; public class Solution { public void rotate(int[][] matrix) { int start = 0, end = matrix.length - 1; while (start < end) { for (原创 2016-06-23 07:26:34 · 270 阅读 · 0 评论 -
Sudoku Solver
参考小莹子:点击打开链接 public class Solution { public void solveSudoku(char[][] board) { if (board == null || board.length == 0 || board[0].length == 0) { return; } help原创 2016-07-24 10:32:06 · 235 阅读 · 0 评论 -
Range Sum Query 2D - Immutable
这道题一定要注意下标,一开始自己做的全都没有下标-1这一操作。 public class NumMatrix { int[][] sum; public NumMatrix(int[][] matrix) { if (matrix == null || matrix.length == 0 || matrix[0].length == 0) {原创 2016-07-25 04:11:57 · 256 阅读 · 0 评论 -
The Skyline Problem
参考:点击打开链接 要用最大堆,是保证,最高的楼总能展现在最外面,那些矮的楼都被覆盖了。 循环中只要是左坐标,就要加入res中,只要这个左坐标还没有被用过, 想这个例子就好了:[2, 10], [3, 15], [5, 12], [7, 15] 遇到[5, 12],这时peek出来的是15(因为这是最大堆),而15在上次循环中已经被用过,压入了res中,而12刚被压入,还没有结束,所以不能原创 2016-07-03 09:21:00 · 318 阅读 · 0 评论 -
Search a 2D Matrix II
记住规律,宇宙规律 public class Solution { public boolean searchMatrix(int[][] matrix, int target) { int m = matrix.length, n = matrix[0].length; int x = m - 1, y = 0; while (x >=原创 2016-06-19 09:34:19 · 219 阅读 · 0 评论 -
Design Tic-Tac-Toe
巩固矩阵的操作,尤其是对角线的操作。 之后处理follow up public class TicTacToe { int[][] matrix; /** Initialize your data structure here. */ public TicTacToe(int n) { matrix = new int[n][n]; }原创 2016-07-27 04:19:15 · 368 阅读 · 0 评论 -
Set Matrix Zeroes
两种做法: 1:m+n的空间复杂度,定义两个bool数组,分别为row和col,记录这个row和col是否要置0,最后再遍历这两个数组,将matrix的相应值置0; 2:1的空间复杂度,利用第一行和第一列来记录从第二行和第二列开始的矩阵中的某一位置是否置为0. public class Solution { public void setZeroes(int[][] matrix)原创 2016-06-19 19:15:33 · 202 阅读 · 0 评论 -
Surrounded Regions
这是的Number of Islands的先导题。以外围四条边为起始,找到当中的0,并从这个0开始找到与其联通的0,将这些0都置为特殊值,这些0都是不被x包围的。而于是剩下的0,则是被x包围。 这中思维很重要。 public class Solution { public void solve(char[][] board) { if (board == null原创 2016-06-21 16:57:17 · 196 阅读 · 0 评论