美文网首页
LeetCode #59 Spiral Matrix II

LeetCode #59 Spiral Matrix II

作者: 刘煌旭 | 来源:发表于2021-04-16 01:57 被阅读0次
    Spiral_Matrix_II.png
    /*
    * Abstract: Exactly the same idea as #54
    */
    #define DIR_RIGHT 0
    #define DIR_DOWN 1
    #define DIR_LEFT 2
    #define DIR_UP 3
    void next(int *i, int *j, int *dir, int *right_barr, int *bottom_barr, int *left_barr, int *top_barr) {
        if (*dir == DIR_RIGHT) {
            if (*j == *right_barr) {
                (*right_barr)--;
                (*i)++;
                *dir = DIR_DOWN;
            } else {
                (*j)++;
            }
        } else if (*dir == DIR_DOWN) {
            if (*i == *bottom_barr) {
                (*bottom_barr)--;
                (*j)--;
                *dir = DIR_LEFT;
            } else {
                (*i)++;
            }
        } else if (*dir == DIR_LEFT) {
            if (*j == *left_barr) {
                (*left_barr)++;
                (*i)--;
                *dir = DIR_UP;
            } else {
                (*j)--;
            }
        } else if (*dir == DIR_UP) {
            if (*i == (*top_barr)) {
                (*top_barr)++;
                (*j)++;
                *dir = DIR_RIGHT;
            } else {
                (*i)--;
            }
        }
    }
    
    int** generateMatrix(int n, int* returnSize, int** returnColumnSizes){
        int **matrix = (int**)malloc(n * sizeof(*matrix));
        *returnColumnSizes = (int*)malloc(n * sizeof(int));
        for (int i = 0; i < n; i++) { 
            matrix[i] = (int*)malloc(n * sizeof(int)); 
            (*returnColumnSizes)[i] = n;
        }
        *returnSize = n;
        
        int right_barr = n - 1, bottom_barr = n - 1, left_barr = 0, top_barr = 1;
        int i = 0, j = 0, dir = 0, val = 0, totalSize = n * n;
        while (val < totalSize) {
            val++;
            matrix[i][j] = val;
            next(&i, &j, &dir, &right_barr, &bottom_barr, &left_barr, &top_barr);
        }
        
        return matrix;
    }
    

    相关文章

      网友评论

          本文标题:LeetCode #59 Spiral Matrix II

          本文链接:https://www.haomeiwen.com/subject/gxsslltx.html