[LeetCode][Java] Spiral Matrix II

來源:互聯網
上載者:User

標籤:leetcode   java   spiral matrix ii   

題目:

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

For example,
Given n = 3,

You should return the following matrix:
[ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ]]
題意:

給定一個整數 n,產生一個正方形矩陣。矩陣中包含著從1到n2 這些元素,並且以螺旋順序排列。

比如,給定n = 3,

你應該返回如下的矩陣:

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

演算法分析:

和題目《Spiral Matrix》類似,螺旋形的放置,去轉就好。

這裡需要說明的是最後的情況,《Spiral Matrix》中的矩陣形狀不一定是正方形,因此轉到最後剩餘的元素可能是一個,也可能是一列或者一行。

本題中已經明確說明了產生的方形的矩陣,因此最終的剩餘元素只可能為一個,代碼中考慮這種情況就OK了。

AC代碼:

public class Solution {    public int[][] generateMatrix(int n)     {        int startX = 0;        int startY = 0;        int endX = n - 1;        int endY = n - 1;                int[][] matrix = new int[n][n];        int startValue = 1;                while (startX <= endX)         {            startValue = fillNumber(startX, startY, endX, endY, matrix, startValue);            startX++;//外圈遍曆完,遍曆內圈            startY++;            endX--;            endY--;        }        return matrix;    }        public int fillNumber(int startX, int startY, int endX, int endY, int[][] matrix, int startV)    {        if (startX == endX)         {            matrix[startX][startY] = startV;            return -1;        }        for (int i = startY; i <= endY; i++) //自左向右        {            matrix[startX][i] = startV;            startV++;        }        for (int i = startX + 1; i <= endX; i++) //自上而下        {            matrix[i][endY] = startV;            startV++;        }        for (int i = endY - 1; i >= startY; i--) //自右而左        {            matrix[endX][i] = startV;            startV++;        }        for (int i = endX - 1; i >= startX + 1; i--)//自下而上        {            matrix[i][startY] = startV;            startV++;        }        return startV;    }}


著作權聲明:本文為博主原創文章,轉載註明出處

[LeetCode][Java] Spiral Matrix II

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.