LeetCode - Spiral Matrix II | Darren's Blog



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 ]
]
public int[][] generateMatrix(int n) {
        if (n < 0)
            return null;
        int[][] matrix = new int[n][n];
        int startRow = 0, startColumn = 0;
        int endRow = n-1, endColumn = n-1;
        int num = 1;
        // Work on 2-D submatrix ranging from Row startRow to endRow,
        // Column startColumn to endColumn
        while (startRow < endRow && startColumn < endColumn) {
            // Top edge, left-to-right
            for (int k = startColumn; k < endColumn; k++)
                matrix[startRow][k] = num++;
            // Right edge, top-to-bottom
            for (int k = startRow; k < endRow; k++)
                matrix[k][endColumn] = num++;
            // Bottom edge, right-to-left
            for (int k = endColumn; k > startColumn; k--)
                matrix[endRow][k] = num++;
            // Left edge, bottom-to-top
            for (int k = endRow; k > startRow; k--)
                matrix[k][startColumn] = num++;
            // Prepare to work on its nested submatrix
            startRow++;
            startColumn++;
            endRow--;
            endColumn--;
        }
        // When n is odd, there is still one cell at the center of the matrix
        // that has not been assigned a value
        if ((n & 1) == 1)
            matrix[startRow][startColumn] = num;
 
        return matrix;
    }
Read full article from LeetCode - Spiral Matrix II | Darren's Blog

No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts