How do you rotate a two dimensional array?

后端 未结 30 3141
耶瑟儿~
耶瑟儿~ 2020-11-22 02:43

Inspired by Raymond Chen\'s post, say you have a 4x4 two dimensional array, write a function that rotates it 90 degrees. Raymond links to a solution in pseudo code, but I\'d

30条回答
  •  自闭症患者
    2020-11-22 03:38

    here's a in-space rotate method, by java, only for square. for non-square 2d array, you will have to create new array anyway.

    private void rotateInSpace(int[][] arr) {
        int z = arr.length;
        for (int i = 0; i < z / 2; i++) {
            for (int j = 0; j < (z / 2 + z % 2); j++) {
                int x = i, y = j;
                int temp = arr[x][y];
                for (int k = 0; k < 4; k++) {
                    int temptemp = arr[y][z - x - 1];
                    arr[y][z - x - 1] = temp;
                    temp = temptemp;
    
                    int tempX = y;
                    y = z - x - 1;
                    x = tempX;
                }
            }
        }
    }
    

    code to rotate any size 2d array by creating new array:

    private int[][] rotate(int[][] arr) {
        int width = arr[0].length;
        int depth = arr.length;
        int[][] re = new int[width][depth];
        for (int i = 0; i < depth; i++) {
            for (int j = 0; j < width; j++) {
                re[j][depth - i - 1] = arr[i][j];
            }
        }
        return re;
    }
    

提交回复
热议问题