【Leetcode】59. Spiral Matrix II

題目地址:

https://leetcode.com/problems/spiral-matrix-ii/

給定一個正整數nn,生成邊長等於nn的旋轉矩陣。可以設四個變量,分別表示行開頭、結束,列開頭、結束,每次生成完一行或者一列後就相應調整這些變量,直到生成結束。代碼如下:

public class Solution {
    public int[][] generateMatrix(int n) {
        int[][] matrix = new int[n][n];
        
        if (n <= 0) {
            return matrix;
        }
        
        int num = 1, rowbegin = 0, rowend = n - 1, colbegin = 0, colend = n - 1;
        // 每次填完一行或者一列,就相應調整
        while (rowbegin <= rowend && colbegin <= colend) {
            for (int i = colbegin; i <= colend; i++) {
                matrix[rowbegin][i] = num++;
            }
            rowbegin++;
            
            for (int i = rowbegin; i <= rowend; i++) {
                matrix[i][colend] = num++;
            }
            colend--;
            
            for (int i = colend; i >= colbegin; i--) {
                matrix[rowend][i] = num++;
            }
            rowend--;
            
            for (int i = rowend; i >= rowbegin; i--) {
                matrix[i][colbegin] = num++;
            }
            colbegin++;
        }
        return matrix;
    }
}

時間複雜度O(n)O(n),空間O(1)O(1)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章