国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

leetcode498. Diagonal Traverse

fanux / 457人閱讀

摘要:題目要求思路和代碼其實這道題目不難,只要捋清楚一些邊界的場景即可。自上而下遍歷數(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

相關文章

  • Leetcode 498:對角線遍歷Diagonal Traverse(python3、java)

    摘要:對角線遍歷給定一個含有個元素的矩陣行,列,請以對角線遍歷的順序返回這個矩陣中的所有元素,對角線遍歷如下圖所示。此時且均超出范圍,,應當優(yōu)先判斷是否超出范圍,執(zhí)行,避免因為再次切換一次索引改變方式。避免出現(xiàn)同時小于時布爾值轉換兩次的錯誤。 對角線遍歷 給定一個含有 M x N 個元素的矩陣(M 行,N 列),請以對角線遍歷的順序返回這個矩陣中的所有元素,對角線遍歷如下圖所示。Given ...

    olle 評論0 收藏0
  • Leetcode 498:對角線遍歷Diagonal Traverse(python3、java)

    摘要:對角線遍歷給定一個含有個元素的矩陣行,列,請以對角線遍歷的順序返回這個矩陣中的所有元素,對角線遍歷如下圖所示。此時且均超出范圍,,應當優(yōu)先判斷是否超出范圍,執(zhí)行,避免因為再次切換一次索引改變方式。避免出現(xiàn)同時小于時布爾值轉換兩次的錯誤。 對角線遍歷 給定一個含有 M x N 個元素的矩陣(M 行,N 列),請以對角線遍歷的順序返回這個矩陣中的所有元素,對角線遍歷如下圖所示。Given ...

    shinezejian 評論0 收藏0
  • Diagonal traverse

    Diagonal traverse 題目鏈接:https://leetcode.com/contest/... 就是找index的規(guī)律。。 public class Solution { public int[] findDiagonalOrder(int[][] matrix) { if(matrix == null || matrix.length == 0 || ma...

    DevTalking 評論0 收藏0
  • [LeetCode] 348. Design Tic-Tac-Toe

    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...

    MobService 評論0 收藏0
  • [LeetCode] 562. Longest Line of Consecutive One in

    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...

    tomlingtm 評論0 收藏0

發(fā)表評論

0條評論

fanux

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<