LeetCode:Spiral Matrix II - 將元素1-n^2以螺旋序填充到矩陣

一、題目名稱java

Spiral Matrix(螺旋輸出矩陣中的元素).net

二、題目地址code

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

三、題目內容element

英文:Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.leetcode

中文:給出一個整數n,生成一個矩陣,使用數字1到n^2以螺旋順序填充這個矩陣開發

例如:給出n=3,則生成以下矩陣:get

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

四、解題方法1it

作這道題的方式能夠參考SpiralMatrix,遍歷順序是同樣的,只不過SpiralMatrix是取數,這道題要作的是賦值。io

Java代碼以下:

/**
 * @功能說明:LeetCode 59 - Spiral Matrix II
 * @開發人員:Tsybius2014
 * @開發時間:2015年11月3日
 */
public class Solution {
    
    /**
     * 生成矩陣
     * @param n
     * @return
     */
    public int[][] generateMatrix(int n) {
        
        if (n < 0) {
            n = 0;
        }
        
        int[][] matrix = new int[n][n];
        if (n == 0) {
            return matrix;
        }
        
        int counter = 1;
        
        //左右上下四個邊界
        int left = 0;
        int right = matrix[0].length - 1;
        int top = 0;
        int bottom = matrix.length - 1;

        int i;
        while (true) {
             
            //上邊,自左至右
            for (i = left; i <= right; i++) {
                matrix[top][i] = counter++;
            }
            if (++top > bottom) {
                break;
            }
             
            //右邊,自上至下
            for (i = top; i <= bottom; i++) {
                matrix[i][right] = counter++;
            }
            if (left > --right) {
                break;
            }
             
            //下邊,自右至左
            for (i = right; i >= left; i--) {
                matrix[bottom][i] = counter++;
            }
            if (top > --bottom) {
                break;
            }
             
            //左邊,自下至上
            for (i = bottom; i >= top; i--) {
                matrix[i][left] = counter++;
            }
            if (++left > right) {
                break;
            }
        }
        
        return matrix;
    }
}

END

相關文章
相關標籤/搜索