885. Spiral Matrix III

Link

Solution

就按照規則走,如果再array範圍

row < R && row >= 0 && col >= 0 && col < C

就加入,反之就ingnore直到所有element都加入了。

    public int[][] spiralMatrixIII(int R, int C, int r0, int c0) {
        List<int[]> ret = new LinkedList<>();
        ret.add(new int[]{r0, c0});
        int len = 1;
        int col = c0, row = r0;
        while(ret.size() < R*C){
            
            for(int i = 1; i <= len; i++){
                col ++;
                if(row < R && row >= 0 && col >= 0 && col < C){
                    ret.add(new int[]{row, col});
                }
            }
            for(int i = 1; i <= len; i++){
                row ++;
                if(row < R && row >= 0 && col >= 0 && col < C){
                    ret.add(new int[]{row, col});
                }
            }
            len++;
            for(int i = 1; i <= len; i++){
                col --;
                if(row < R && row >= 0 && col >= 0 && col < C){
                    ret.add(new int[]{row, col});
                }
            }
            
            
            for(int i = 1; i <= len; i++){
                row--;
                if(col < C && col >= 0 && row >= 0 && row < R){
                    ret.add(new int[]{row, col});
                }
            }
            len++;
        }
        return ret.toArray(new int[ret.size()][2]);
    }

Last updated

Was this helpful?