[LeetCode]Spiral Matrix,解題報告

來源:互聯網
上載者:User

前言新年第一篇部落格先來一個解題報告吧,主要也是自己比較懶,跨年夜女友發燒各種照顧了,沒來得及寫年終總結,這篇解題報告也是我在做題過程中有些心得體會,跟大家分享!

在這裡,先祝福各位看我部落格的同學元旦快樂,萬事如意
題目Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral order.

For example,
Given the following matrix:



You should return [1,2,3,6,9,8,7,4,5].

思路其實就是按照從(上->右->下->左)的順序解析矩陣,同時考慮只有一行或者只有一列的情況,切忌心浮氣躁



AC代碼

public class Solution {    public ArrayList<Integer> spiralOrder(int[][] matrix) {        int minX, minY, maxX, maxY, x, y;        ArrayList<Integer> list = new ArrayList<Integer>();        // special case        if (matrix == null || matrix.length == 0) {            return list;        }        // initial variable        minX = minY = 0;        maxX = matrix.length - 1;        maxY = matrix[0].length - 1;        for (; minX <= maxX && minY <= maxY; minX++, minY++, maxX--, maxY--) {            x = minX;            y = minY;            list.add(matrix[x][y]);            // only a row            if (minX == maxX) {                for (y += 1; y <= maxY; y++) {                    list.add(matrix[x][y]);                }                break;            }            // only a column            if (minY == maxY) {                for (x += 1; x <= maxX; x++) {                    list.add(matrix[x][y]);                }                break;            }            // a square            for (y += 1; y <= maxY; y++) { // top                list.add(matrix[x][y]);                if (y == maxY) break;            }            for (x += 1; x <= maxX; x++) { // right                list.add(matrix[x][y]);                if (x == maxX) break;            }            for (y -= 1; y >= minY; y--) { // bottom                list.add(matrix[x][y]);                if (y == minY) break;            }            for (x -= 1; x > minX; x--) { // left                list.add(matrix[x][y]);                if (x == minX + 1) break;            }        }        return list;    }}


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.