小编典典

顺时针旋转阵列

algorithm

我有一个二维数组,我需要顺时针旋转90度,但是我一直在获取arrayindexoutofbounds …

public int[][] rorateArray(int[][] arr){

        //first change the dimensions vertical length for horizontal length
        //and viceversa
        int[][] newArray = new int[arr[0].length][arr.length];

        //invert values 90 degrees clockwise by starting from button of
        //array to top and from left to right
        int ii = 0;
        int jj = 0;
        for(int i=0; i<arr[0].length; i++){
            for(int j=arr.length-1; j>=0; j--){
                newArray[ii][jj] = arr[i][j];

                jj++;
            }
            ii++;
        }

        return newArray;
    }

阅读 213

收藏
2020-07-28

共1个答案

小编典典

我不了解您的循环逻辑-不应该

   for(int i=0; i<arr[0].length; i++){
        for(int j=arr.length-1; j>=0; j--){
            newArray[i][j] = arr[j][i];
        }
    }

减去每个索引是i在此处像是在上升还是下降(j在这里)(以及是否需要在分配中“翻转”一个或两个,例如arr.length-1-j在分配中使用j一侧的普通内容=;-)
,因为arr维度是arr.lengthby的arr[0].length,而对于newArray,反之亦然,在我看来,arr(的第二个索引)上的第一个索引newArray必须是从0到include的范围arr.length-1,另一个索引的范围是另一个。

这是一种“基本尺寸分析”(除了“尺寸”的使用方式与通常指物理尺寸(即时间,质量,长度,c)的“尺寸分析”不同)。“翻转”和使每个循环向上或向下循环的问题取决于准确地可视化您的意思,而我并不是最伟大的“心理可视化器”,因此,我认为,在现实生活中,我会尝试这种“轴换位”,直到我击中了这个意思;-)。

2020-07-28