LeetCode: Spiral Matrix II

题目:

输入一个n,返回它的平方的一个顺时针排列的矩阵

例子:

Input: 3
Output:
[
 [ 1, 2, 3 ],
 [ 8, 9, 4 ],
 [ 7, 6, 5 ]
]

思路:

同顺时针打印矩阵一样,甚至要简单一些,因为不会存在只剩1行,1列的情况

代码:

class Solution {
    public int[][] generateMatrix(int n) {
        if(n == 0){
            return null;
        }
        int[][] result = new int[n][n];

        int rowBegin = 0;
        int rowEnd = n - 1;
        int colBegin = 0;
        int colEnd = n - 1;
        int index = 1;

        while( rowBegin <= rowEnd && colBegin <= colEnd){
            for(int j=colBegin; j <= colEnd ; j++){
                result[rowBegin][j] = index++;
            }
            rowBegin ++;

            for(int i=rowBegin; i<=rowEnd; i++ ){
                result[i][colEnd] = index++;
            }
            colEnd--;

            for(int j=colEnd; j>=colBegin; j--){
                result[rowEnd][j] = index++;
            }
            rowEnd--;

            for(int i=rowEnd; i>=rowBegin; i--){
                result[i][colBegin] = index++;
            }
            colBegin++;
        }
        return result;
    }
}


编程   算法      算法 Leetcode

本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!