摘要:題目要求思路和代碼其實這道題目不難,只要捋清楚一些邊界的場景即可。自上而下遍歷數(shù)組時,一定是自右往左移動的,因此下標移動的方向為。自上而下有兩種邊界場景,一個是到達了左邊界,此時的移動方向變?yōu)榧瓷蠄D中的。
題目要求
Given a matrix of M x N elements (M rows, N columns), return all elements of the matrix in diagonal order as shown in the below image. Example: Input: [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ] Output: [1,2,4,7,5,3,6,8,9]思路和代碼
其實這道題目不難,只要捋清楚一些邊界的場景即可。自上而下遍歷數(shù)組時,一定是自右往左移動的,因此下標移動的方向為[row, column]=>[row+1, column-1]。自上而下有兩種邊界場景,一個是到達了左邊界,此時的移動方向變?yōu)?b>[row, column]=>[row+1, column], 即上圖中的4->7。另一個是遇到了下邊界,此時的移動方向變?yōu)?b>[row, column]=>[row, column+1],即上圖中的8->9。同理,自下而上遍歷數(shù)組時,一定是自左往右移動的,因此下標的移動方向為[row, column]=>[row-1, column+1]。它同樣有兩個邊界場景,一個是到達了右邊界,此時的移動方向變?yōu)?b>[row, column]=>[row+1, column],還有一個場景是遇到上邊界,此時的移動方向變?yōu)?b>[row, column]=>[row, column+1]。
上述思路的代碼如下:
public int[] findDiagonalOrder(int[][] matrix) { if(matrix==null || matrix.length==0 || matrix[0].length==0) return new int[0]; int row = matrix.length; int column = matrix[0].length; int[] result = new int[row * column]; int rowIndex = 0; int columnIndex = 0; boolean up = true; int index = 0; while(index < result.length) { result[index++] = matrix[rowIndex][columnIndex]; if(up) { if(rowIndex > 0 && columnIndex < column-1) { rowIndex--; columnIndex++; }else { up = false; if(columnIndex < column-1){ columnIndex++; }else { rowIndex++; } } }else { if(rowIndex < row-1 && columnIndex > 0) { rowIndex++; columnIndex--; }else{ up = true; if(rowIndex < row-1) { rowIndex++; }else { columnIndex++; } } } } return result; }
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/75520.html
摘要:對角線遍歷給定一個含有個元素的矩陣行,列,請以對角線遍歷的順序返回這個矩陣中的所有元素,對角線遍歷如下圖所示。此時且均超出范圍,,應當優(yōu)先判斷是否超出范圍,執(zhí)行,避免因為再次切換一次索引改變方式。避免出現(xiàn)同時小于時布爾值轉換兩次的錯誤。 對角線遍歷 給定一個含有 M x N 個元素的矩陣(M 行,N 列),請以對角線遍歷的順序返回這個矩陣中的所有元素,對角線遍歷如下圖所示。Given ...
摘要:對角線遍歷給定一個含有個元素的矩陣行,列,請以對角線遍歷的順序返回這個矩陣中的所有元素,對角線遍歷如下圖所示。此時且均超出范圍,,應當優(yōu)先判斷是否超出范圍,執(zhí)行,避免因為再次切換一次索引改變方式。避免出現(xiàn)同時小于時布爾值轉換兩次的錯誤。 對角線遍歷 給定一個含有 M x N 個元素的矩陣(M 行,N 列),請以對角線遍歷的順序返回這個矩陣中的所有元素,對角線遍歷如下圖所示。Given ...
Diagonal traverse 題目鏈接:https://leetcode.com/contest/... 就是找index的規(guī)律。。 public class Solution { public int[] findDiagonalOrder(int[][] matrix) { if(matrix == null || matrix.length == 0 || ma...
Problem Design a Tic-tac-toe game that is played between two players on a n x n grid. You may assume the following rules: A move is guaranteed to be valid and is placed on an empty block.Once a winnin...
Problem Given a 01 matrix M, find the longest line of consecutive one in the matrix. The line could be horizontal, vertical, diagonal or anti-diagonal.Example:Input:[[0,1,1,0], [0,1,1,0], [0,0,0,1]]Ou...
閱讀 2664·2021-11-18 10:02
閱讀 3426·2021-09-22 15:50
閱讀 2359·2021-09-06 15:02
閱讀 3577·2019-08-29 16:34
閱讀 1745·2019-08-29 13:49
閱讀 1275·2019-08-29 13:29
閱讀 3629·2019-08-28 18:08
閱讀 2937·2019-08-26 11:52